如何在c++中从两层继承类调用函数
How to call function from a two-level inherited class in C++?
我在prog2.cpp中得到了一个主程序
#include "stack1.h"
int main(void){
stack1 x(100); // Declare a stack1 x of length 100
......
}
我需要从stack1。h中调用这个stack1,但这个原始函数来自stack。h,它是stack1。h的父类
class stack
{
....
public:
stack(int length);
....
}
stack1.h现在看起来像这样:
#include "stack.h"
class stack1: public stack{
...... //irrelevant code
}
问题是stack1 x(100)从MVS得到错误:
错误:没有构造函数"stack1::stack1"的实例匹配参数列表。
我已经尝试了很多方法来摆脱这个,但它总是导致更多的问题。我该如何解决这个问题?
调用父类的构造函数是子类的构造函数的责任。
你需要在stack1
类中声明一个构造函数,基本上,将它的参数转发给它的父类的构造函数:
struct stack1: public stack {
stack1(int n) : stack(n) {}
};
你并没有真正调用一个函数。你在调用构造函数。构造函数的规则是不同的。通常,使用子类调用继承自超类的方法是没有问题的。这很简单。但在这里,它不是一个方法,而是一个构造函数。
如果你只想使用父类的构造函数,你可以使用using
关键字。
class stack1 : public stack
{
using stack::stack;//use all constructors of stack
using stack::operator=; //use the assignment operators
};
相关文章:
- 为什么不能用两层列表初始值设定项初始化 2D std::array?
- 在钻石问题的求解中,为什么要虚拟地继承两次grand-parent类
- 解决虚拟方法的歧义继承的两种方法
- 无法使用两个包装不同下一层的ssl_stream编译代码
- 两个继承类如何调用彼此的方法?
- C++两次从文件保存对象读取多重继承
- 从两个不同类继承的非虚拟基类的访问成员
- 创建一个具有两个可能继承的类
- 无法调用通过两个类继承的虚拟方法
- 如何修复从基类继承两次时"error: no matching function for call to"
- 从两个类继承的空类,一个是模板
- 在C++中继承同一类两次(故意)
- 多层继承在C 中是否有意义
- VS 2008中对__VA_ARGS_的两层调用失败
- 多层继承C++
- 如何绘制具有不同fps速率的两层
- 两层嵌套的c++类适用于GCC,但不适用于Clang
- 如何在c++中从两层继承类调用函数
- c++多层继承,多态
- 如何在类内部的多重/多层继承中访问基类调用