"Using"关键字用于调用基类构造函数

Avr*_*dis 8 c++ using

我有以下基类

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关键字吗?

Joe*_*rgB 9

你的代码 - 没有using Grammateas::Grammateas;注释 - 应该可行.(但要注意:继承的构造函数将保持_hours未初始化.)

通过using-declarations 继承构造函数是C++ 11中的一个新特性.也许您的编译器还不支持此功能,或者在继承的构造函数和其他重载相结合时遇到问题.(如果它接受说明final符,它似乎正确设置为首先编译C++ 11.)

  • 我发现此功能仅适用于GCC 4.8.我有GCC(Ubuntu/Linaro 4.7.2-2ubuntu1)4.7.2.最后的关键字和-std = c ++ 11没问题 (3认同)