这可能是一个非常基本的问题。如何在变量声明后调用构造函数?例如,这是一个工作代码:
// in header
class Bar
{
SomeClass *foo;
public:
Bar();
}
// in .cpp
Bar::Bar()
{
foo = new SomeClass(1, 2, 3);
}
但我怎样才能改变它,使 foo
不是指针?
谢谢!
最佳答案
如果您的 foo
是在类内部定义的,那么使用构造函数初始化列表如下:
class X {
X() : foo(1,2,3) {}
SomeClass foo;
};
如果您需要计算foo
-s 构造函数的参数,那么它会变得更加困难。您可以添加可以计算您的值的函数,即:
class X {
X() : foo(initX(),initY(),initZ()) {}
SomeClass foo;
static int initX() { return 1;}
static int initY() { return 2;}
static int initZ() { return 3;}
};
但这并不总是可能的——也就是说,这取决于你如何计算你的值(value)。 (静态是有意为之,因为您最好不要使用未完全构造的类成员)。
您也可以将这些值作为构造函数参数传递。
关于c++ - 声明后调用构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38425573/