我有以下基类
class Grammateas
{
public:
Grammateas(std::string name):_name(name){};
virtual ~Grammateas(){};
private:
std::string _name;
};
Run Code Online (Sandbox Code Playgroud)
和以下派生类
class Boithos final : public Grammateas
{
public:
//using Grammateas::Grammateas;
Boithos(int hours):Grammateas("das"),_hours(hours){};
virtual ~Boithos(){};
private:
int _hours;
};
Run Code Online (Sandbox Code Playgroud)
我想使用Base类构造函数来创建这样的对象
Boithos Giorgakis(5); //works
Boithos Giorgakis("something"); //Bug
Run Code Online (Sandbox Code Playgroud)
我读过我可以使用using关键字但是当我尝试使用它时
using Grammateas::Grammateas;
Run Code Online (Sandbox Code Playgroud)
编译器返回一条消息
错误:'Grammateas :: Grammateas'的名字构造函数
你能帮我理解带有构造函数的using关键字吗?
你的代码 - 没有using Grammateas::Grammateas;注释 - 应该可行.(但要注意:继承的构造函数将保持_hours未初始化.)
通过using-declarations 继承构造函数是C++ 11中的一个新特性.也许您的编译器还不支持此功能,或者在继承的构造函数和其他重载相结合时遇到问题.(如果它接受说明final符,它似乎正确设置为首先编译C++ 11.)