答案 0 :(得分:0)
我不确定您要实现的目标,但是如果您想将声明类与初始化分开,则可以使用指针。
因为现在你有类似的东西:Test test;
- 它将调用类Test
的构造函数。为了避免这种情况,您可以使用指针并将其写为:Test *test;
- 现在test
只是指向某个对象的指针。
然后你可以在另一个函数中创建(分配)这个对象。所以你的整个代码看起来像这样:
#include "Test.h"
Test *test;
void gen()
{
test = Test::Test("hello"); //Func Test has to be static and
//it has to return pointer to Test.
//Or you can use new Test("hello") here.
}
int main()
{
//Now you can dereference pointer here to use it:
test->foo(); //Invoke some function
return 0;
}
而不是原始指针你可以使用智能指针,例如shared_ptr,它将负责内存管理,就像在java中一样:
#include "Test.h"
#include <memory>
std::shared_ptr<Test> test;
void gen()
{
test = std::make_shared<Test>("Hello");
}
int main()
{
//You use it as normal pointer:
test->foo();
return 0;
}