调用基类构造函数的"Using"关键字
The "Using" keyword to call base class constructor
我有以下基类
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;
)应该可以工作。(但要注意:继承的构造函数会使_hours
未初始化。)
通过using
-声明继承构造函数是C++11中的一个新特性。也许您的编译器还不支持此功能,或者在组合继承的构造函数和其他重载时遇到问题。(如果它接受final
说明符,那么它似乎被正确设置为首先编译C++11。)
相关文章:
- 是否建议在函数中使用using关键字
- 如何使用 "using" 关键字定义函数原型/签名
- C++使用 using 关键字键入别名
- C++带有 using 关键字和参数包的模板函数
- 如何将"using"关键字用于可变参数模板
- 如何在C++中使用"using"关键字
- 使用 "using" 关键字继承基类的复制和移动构造函数
- 在纯虚函数上应用 "using" 关键字C++
- C++- "using"关键字或使用带有范围解析运算符的命名空间名称
- 使用 "using" 关键字作为伪预处理器
- 如何在方法中使用 make "using" 关键字以接受它作为类级别
- "using"关键字在 c++ 中究竟有什么作用?
- C++中"using"关键字背后的逻辑是什么?
- C++11`using`关键字:专门化模板参数的模板别名
- C++避免使用 using 关键字在派生类中进行动态调度
- 如何使用模板函数C++ 11 的 using 关键字来删除作用域中的命名空间
- 了解'using'关键字:C++
- 为什么VC++2013拒绝编译嵌套类型,当用作模板函数返回类型时,用using关键字使其可见
- 不赞成使用访问声明,而是使用-declarations;建议:添加“using”关键字
- 调用基类构造函数的"Using"关键字