C++从类C调用类A中的构造函数(固有错误)
C++ call constructor in class A from class C (inherritence)
经过一段时间的坐立不安,完成了《通过游戏编程实现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) { }
相关文章:
- 构造函数请求错误的参数数
- pthread_create在构造函数段错误中
- 如何从构造函数返回错误代码?
- 在成员初始值设定项列表和构造函数主体中委派构造函数有什么区别
- 移动和模板构造函数,错误的一个
- 此语法中的构造函数转换错误
- 复制构造函数语法错误:myclass 没有成员 mymember
- 删除默认类构造函数有什么意义?
- 如何应用使默认构造函数有条件地显式
- 两种类型的定义构造函数有什么区别?第一个使用":",第二个用大括号(如函数)定义它
- Boost.Python - 参数化构造函数的错误
- SquareMatrix 的 ADT 构造函数有什么问题?
- 继承 MSVC 2017 中的模板构造函数和错误 C2600
- 与 map 一起使用时复制构造函数常量错误
- 双重列表复制构造函数:与单一列表复制构造函数有何不同
- 初始化对象后,用隐式转换而不是赋值运算符调用构造函数有什么意义
- C++构造函数实现错误
- 在构造函数 - 编译器错误中调用的成员变量的驱动器
- 构造函数在错误的时间调用
- 错误到底是什么,对于错误地调用可移动和不可复制成员的复制构造函数有什么解决方法