class Temp {
public :
Temp(X& x): x_(x) {}
Temp(X& x, Y& y) : x_(x), y_(y) {}
...
private:
X& x_;
Y& y_;
}
我收到错误是因为在 Temp(X& x): x_(x)
的情况下,引用 y_
未初始化。正确编写此类的常见做法是什么?
最佳答案
我会建议另一种方法,即使这可能不是您想要的。
它不使用引用变量(取而代之的是内存指针),它也不使用 boost,但它允许您保留两个构造函数而无需花费更多的内存资源。
#include <iostream>
class Temp
{
public :
Temp(int& x): x_(&x), y_(NULL) {}
Temp(int& x, int& y) : x_(&x), y_(&y) {}
void print() { std::cout << "*x_: " << *x_ << std::endl; }
private:
int* x_;
int* y_;
};
int main()
{
int x = 5;
Temp tmp(x);
tmp.print();
return 0;
}
关于c++ - 正确初始化成员引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4430223/