C++ ";使用;关键字调用基类构造函数
我有以下基类C++ ";使用;关键字调用基类构造函数,c++,using,C++,Using,我有以下基类 class Grammateas { public: Grammateas(std::string name):_name(name){}; virtual ~Grammateas(){}; private: std::string _name; }; 和下面的派生类 class Boithos final : public Grammateas { public: //using Grammateas::Grammateas; Boithos(int h
class Grammateas
{
public:
Grammateas(std::string name):_name(name){};
virtual ~Grammateas(){};
private:
std::string _name;
};
和下面的派生类
class Boithos final : public Grammateas
{
public:
//using Grammateas::Grammateas;
Boithos(int hours):Grammateas("das"),_hours(hours){};
virtual ~Boithos(){};
private:
int _hours;
};
我想使用基类构造函数来创建这样的对象
Boithos Giorgakis(5); //works
Boithos Giorgakis("something"); //Bug
我读到我可以使用using关键字,但当我尝试像
using Grammateas::Grammateas;
编译器返回一条消息
错误:“Grammateas::Grammateas”名称构造函数
你能帮我理解带构造函数的using关键字吗?你的代码-带
的using Grammateas::Grammateas代码>未注释-应该可以工作。(但要注意:继承的构造函数将保持未初始化状态。)
使用声明通过继承构造函数是C++11中的一个新特性。可能您的编译器还不支持此功能,或者在组合继承的构造函数和其他重载时遇到问题。(如果它接受了final
说明符,那么它似乎首先被正确设置为编译C++11。)它是用于继承构造函数的…最后我发现这个功能只在GCC4.8上可用。我有GCC(Ubuntu/Linaro 4.7.2-2ubuntu1)4.7.2我发现这个功能只在GCC4.8上可用。我有GCC(Ubuntu/Linaro4.7.2-2ubuntu1)4.7.2。最后一个关键字和-std=c++11没关系