在C++中,有没有办法在初始化列表中有类似临时变量的东西.我想初始化两个具有相同实例的常量成员,而不必传递该内容,删除const要求,使用Factory(即将其传入但工厂生成它以将其隐藏在API用户中),或者让temp实际上是一个成员变量.
就是这样的
Class Baz{
const Foo f;
const Bar b;
Baz(Paramaters p):temp(p),f(p,temp),b(p,temp){ //temp is an instance of Something
// But NOT A member of Baz
// Whatever
}
}
Run Code Online (Sandbox Code Playgroud)
代替
Class Baz{
Foo f;
Bar b;
Baz(Paramaters p){
Something temp(p);
f = Foo(p,temp)
b = Bar(p,temp)
}
}
Run Code Online (Sandbox Code Playgroud)
要么
Class Baz{
Foo f;
Bar b;
Baz(Paramaters p,Something s):f(p,s),b(p,s){
}
}
Run Code Online (Sandbox Code Playgroud) 在一个项目中,我有class B
一个派生自class A
哪里,哪里class A
有一个无法访问的默认构造函数.
Class B
设置如下:
class B : public A
{
private:
void SetupFunction() { /*Crucial code*/ }
public:
B() : A(Value) {}
}
Run Code Online (Sandbox Code Playgroud)
假设在构造SetupFunction()
函数之前初始化期间调用是至关重要的,A(Value)
我将如何实现这一目标?可能吗?
我Code::Blocks 13.12
在Windows 7上使用