我已经查看了十几个qst的短语no appropriate default constructor available
,但没有帮助我自己的问题。
这是一个非常基本的C ++ qst(因为我还在学习绳索),所以如果你的眼睛盯着它的简单,请提前抱歉。我试图继承一个没有参数的模板化构造函数的类。如:
class Base {
public:
template<class T>
Base() {
T *t = this;
//more irrelevant stuff
}
}
我试过
class Derived : public Base {
public:
Derived() : Base() {
}
}
和
class Derived : public Base {
public:
Derived() {
}
}
无济于事。在这两种情况下,我都会收到错误消息no appropriate default constructor available
。怎么去做这个?如果这是不可能的,你能解释一下原因吗?
当我设置像template<class T> Base(T *t)
这样的构造函数时(将模板参数作为参数),它可以工作。
P.S。如果它很重要,我的代码中我也会继承另一个类的Derived
。
答案 0 :(得分:0)
在
中没有访问默认构造函数的语法class blah_t
{
public:
template< class other_t > blah_t() {}
};
还有一些其他方法可以使默认构造函数不可访问,例如
class blah_t
{
public:
blah_t() {}
blah_t( int = 666 ) {}
};
正如圣标所解释的那样,建造者没有名字......
但是,回到原来的问题,为了能够指定模板参数,你需要一些涉及模板参数类型的普通函数参数