我在.h
:
ILFO *pLFOPianoRoll1, *pLFOPianoRoll2, *pLFOPianoRoll3;
我在.cpp
中使用:
pLFOPianoRoll1 = new ILFO(this, 8, 423, kParamIDPianoRollLFO1, 0);
pLFOPianoRoll2 = new ILFO(this, 8, 542, kParamIDPianoRollLFO1, 1);
pLFOPianoRoll3 = new ILFO(this, 8, 661, kParamIDPianoRollLFO1, 2);
但是我想避免在这里指点(我了解到#34;如果你不需要它们,不要使用它们"),只需使用变量/类(由于以后手动管理内存)。
但是如何在.h(例如ILFO mLFOPianoRoll1
)中取消对象的变量,而不是在.cpp
上调用CTOR?
答案 0 :(得分:1)
为了简单地声明变量,请使用extern
关键字:
extern ILFO obj; //just declaration, no constructor is called.
在.cpp文件中
ILFO obj(blah, blah, blah); //definition
当然,如果您正在讨论命名空间范围(包括全局)变量。如果您正在讨论类成员,那么您必须知道在类的构造函数之前不会调用成员的构造函数。您可以将参数传递给constructor initialization list中的构造函数。
答案 1 :(得分:1)
您可以使用初始化列表来实现此目的。
#include <iostream>
#include <string>
using namespace std;
class A
{
public:
A(int a_) : a(a_) { }
void print()
{
std::cout << "A: " << a << std::endl;
}
int a;
};
class B
{
public:
B() : a(1), a2(3) {}
A a;
A a2;
};
int main() {
B bObj;
bObj.a.print();
bObj.a2.print();
return 0;
}