C++从类C调用类A中的构造函数(固有错误)

C++ call constructor in class A from class C (inherritence)

本文关键字:构造函数 有错误 从类 调用 C++      更新时间:2023-10-16

经过一段时间的坐立不安,完成了《通过游戏编程实现c++》一书,我一直在写一个程序。

情况如下:

Class A
{
 public:
  A(int x)
 protected:
  int a;
};
A::A(int x):
 a(x)
{}
Class B : public A
Class C : public B
{
 public:
  C(int x)
};
C::C(int x)
{
  A(int x);
}

我能在类C的构造函数中调用类A的构造函数吗?

据我所知:B链接到A,C链接到B,所以当我能够通过调用它来访问成员变量和函数时,我应该能够从C获得类A的构造函数。

您可以试试这个:

class B : public A
{
public:
    B(int x) : A(x) { }
};
class C : public B
{
public:
    C(int x) : B(x) { }
};

或者如果你很懒(并且使用C++11):

class B : public A
{
public:
    using A::A(int);
};
class C : public B
{
public:
    using B::B(int);
};

这不起作用:

class C : public B
{
public:
    C(int x) : A(x) { }
};
main.cpp: In constructor ‘C::C(int)’:
main.cpp:23:16: error: type ‘A’ is not a direct base of ‘C’
     C(int x) : A(x) { }
                ^
main.cpp:23:19: error: use of deleted function ‘B::B()’
     C(int x) : A(x) { }