当我在子类中添加了一个move构造函数时,我发现我不能为构造函数使用默认参数。我还尝试在中使用重载构造函数
base_class
使用零参数调用普通构造函数,并手动传入参数,但我遇到了同样的问题。
Visual Studio发出的错误消息为:
error C2512: 'child_class<base_class>': no appropriate default constructor available
class base_class {
public:
base_class(int param1=1) {}
};
template <typename BaseType>
class child_class : public BaseType {
public:
using BaseType::BaseType;
child_class(child_class&& move_in)
: BaseType(std::move(move_in)) {}
};
int main(int argc, char** argv) {
child_class<base_class> instance1; // MSVC says no default constructor so doesn't compile.
child_class<base_class> instance2(123); // No problem
}