Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我可以让子类隐式继承基类构造函数吗?_C++_Inheritance_C++14_Class Constructors - Fatal编程技术网

C++ 我可以让子类隐式继承基类构造函数吗?

C++ 我可以让子类隐式继承基类构造函数吗?,c++,inheritance,c++14,class-constructors,C++,Inheritance,C++14,Class Constructors,假设我有: class A { public: A(int x_) : x(x_) {} int x; }; class B: public A { }; class C: public A { }; 使用此代码,B和C将不会有任何构造函数(复制构造函数除外)。我想更改类A(不是B或C)中的某些内容,以便B和C都将继承A的构造函数。这有可能吗?不可能隐式地拥有它们。您可以通过以下方式显式使用构造函数: class B: public A { using A::

假设我有:

class A {
public:
        A(int x_) : x(x_) {}
        int x;
};

class B: public A { };
class C: public A { };

使用此代码,B和C将不会有任何构造函数(复制构造函数除外)。我想更改类
A
(不是
B
C
)中的某些内容,以便
B
C
都将继承
A
的构造函数。这有可能吗?

不可能隐式地拥有它们。您可以通过以下方式显式使用构造函数:

class B: public A { using A::A; };
class C: public A { using A::A; };

不可能隐式地拥有它们。您可以通过以下方式显式使用构造函数:

class B: public A { using A::A; };
class C: public A { using A::A; };

不,原因是要做到这一点,你必须从A中自动生成B类和C类的代码。但我不确定我是否看到了所有可能的情况,因此没有回答@Pixelchemist的可能重复:这个问题问为什么我在这里写的代码不会导致ctor继承。我问是否可以添加(或更改)一些东西来实现继承。所以,不是重复。不,原因是为了实现这一点,你必须从a中自动生成B类和C类的代码。但我不确定我是否看到了所有可能的情况,因此没有一个答案可能是@Pixelchemist的重复:这个问题问到为什么我在这里写的代码不会导致ctor继承。我问是否可以添加(或更改)一些东西来实现继承。所以,不是傻瓜。可能是因为我用了
而不是
;-)那太糟糕了,但是+1告诉我这个坏消息。还有,你的回答可能在第一节课结束后就结束了,我知道其他的。“但好吧。”einpoklum像素化学家怎么会知道这一点?我认为他能告诉你怎么做是件好事。请记住,答案不仅针对你,也针对搜索此答案的所有其他人。他们可能不知道你可以显式继承构造函数。@NathanOliver:我确实明确说过我不想改变关于B和C的任何东西。这就是为什么我举了两个子类而不是一个子类作为例子。可能是因为我用了
而不是
;-)那太糟糕了,但是+1告诉我这个坏消息。还有,你的回答可能在第一节课结束后就结束了,我知道其他的。“但好吧。”einpoklum像素化学家怎么会知道这一点?我认为他能告诉你怎么做是件好事。请记住,答案不仅针对你,也针对搜索此答案的所有其他人。他们可能不知道你可以显式继承构造函数。@NathanOliver:我明确说过我不想改变关于B和C的任何东西。这就是为什么我举了两个子类ratheer而不是一个子类作为例子。