我有以下基础课

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;

编译器返回一条消息



您能帮我理解构造函数的using关键字吗?

最佳答案

您的代码-无需注释using Grammateas::Grammateas;-应该可以正常工作。 (但是要注意:继承的构造函数将使_hours未初始化。)

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

关于c++ - "Using"关键字调用基类构造函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14772445/

10-10 07:29