gpt4 book ai didi

c++ - 调用基类构造函数的 "Using"关键字

转载 作者:可可西里 更新时间:2023-11-01 17:41:45 29 4
gpt4 key购买 nike

我有以下基类

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;

编译器返回一条消息

error: ‘Grammateas::Grammateas’ names constructor

你能帮我理解 using 关键字和构造函数吗?

最佳答案

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

通过 using 声明继承构造函数是 C++11 中的一项新功能。也许您的编译器尚不支持此功能,或者在组合继承的构造函数和其他重载时存在问题。 (如果它接受 final 说明符,它似乎被正确设置为首先编译 C++11。)

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

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com