gpt4 book ai didi

c++ - 获取错误无法从C++ 17编译器的间接库继承构造函数

转载 作者:行者123 更新时间:2023-12-02 10:03:19 25 4
gpt4 key购买 nike

#include <iostream> 
#include <chrono>

class A{
public:
A(){} // default constr

};

class B:public A{
public:
using A::A;
protected:

};

class C:public B{
public:
using A::A; //scope resolution

int f1(A a);// dummy function

};

int main ()
{
return 0;
}

//上面的程序可以在C++和C++ 14上正常工作,但是在C++ 17上却给出错误
//为什么以及如何解决?

最佳答案

是的,构造函数只能从直接基类继承。 [namespace.udecl]/3

If a using-declarator names a constructor, its nested-name-specifier shall name a direct base class of the class being defined.



您可以从 B类的 C继承构造函数; A的构造函数已经在 B中继承了,那么它们也将在 C中继承。
class C : public B {
public:
using B::B;
// ^^^^
};

关于c++ - 获取错误无法从C++ 17编译器的间接库继承构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61476446/

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