我现在非常忙于调试一些代码,所以我不能做一个完整的例子,但这基本上描述了我的问题
class Base{};
class MyX:public Base
{
...
};
class Derived:Base
{
...
};
template<class X>
class MyClass:Derived
{
private:
MyClass(const MyClass& )
:x()
{}
public:
MyClass(const X& value)
:x(value)
{}
};
....
MyX x;
MyClass<MyX>(x);
Run Code Online (Sandbox Code Playgroud)
这给我一个这样的错误:
error: there are two possible constrcutors MyClass<X>(const MyClass<X>&) and MyClass<X>(const X&)
Run Code Online (Sandbox Code Playgroud)
MyClass<MyX>(x);
Run Code Online (Sandbox Code Playgroud)
被解析为
MyClass<MyX> x;
Run Code Online (Sandbox Code Playgroud)
但是MyClass<MyX>
没有默认的构造函数.试着给它一个名字:
MyClass<MyX> p(x);
Run Code Online (Sandbox Code Playgroud)