我正在尝试编写通用模板类,但是当我尝试实现它时,我一直收到此错误:
no matching function for call to type_impl::type_impl()
其中type_impl是我试图使用类的类型。
这是我的代码:
class BaseClass {
protected:
// Some data
public:
BaseClass(){
// Assign to data
};
};
template <class T>
class HigherClass : BaseClass {
private:
T data;
public:
// Compiler error is here.
HigherClass(){};
// Other functions interacting with data
};
class Bar {
private:
// Some data
public:
Bar(/* Some arguments*/) {
// Assign some arguments to data
};
};
// Implementation
HigherClass<Bar> foo() {
HigherClass<Bar> newFoo;
// Do something to newFoo
return newFoo;
};
答案 0 :(得分:4)
问题在于,由于您为Bar
提供了非默认构造函数,编译器不再提供默认构造函数,这在您的代码中是必需的:
HigherClass(){}; // will init data using T()
因此为Bar
提供默认构造函数。例如:
class Bar {
public:
Bar() = default; // or code your own implementation
Bar(/* Some arguments*/) { ... }
};