我知道有 100 万篇关于此的帖子,但我仍然不明白为什么这不起作用 =/
这一行:
test = new Test2<Test>;
给我这个错误:
error C2512: 'Test2<PARENT>' : no appropriate default constructor available
with
[
PARENT=Test
]
代码:
template<class PARENT>
class Test2;
////////////////////////////
class Test
{
public:
Test2<Test> *test;
Test()
{
test = new Test2<Test>;
}
};
/////////////////////////////
template<class PARENT>
class Test2
{
public:
PARENT *parent;
};
////////////////////////////
有人可以帮我吗?
最佳答案
在实例化时(即在 Test
构造函数内部),到目前为止,编译器所拥有的只是 Test2<>
的前向声明;它还不知道有哪些构造函数可用。
要解决这个问题,要么将 Test2<>
的定义移到 Test
的定义之前,要么将 Test
构造函数的定义移到类定义之外(并在 Test2<>
的定义之后)。
关于c++ - 模板类 : No default constructor,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5990551/