【发布时间】:2021-02-22 04:29:08
【问题描述】:
我试图在父类中拥有同一类的多个实例。每个都有自己的构造函数参数。
我试过这个,但不知道如何解决这个问题。任何帮助将不胜感激。
Base.h
class Base
{
public:
Base(int a, int b);
};
父.h
#include "Base.h"
class Base_A :Base{};
class Base_B :Base{};
class Parent : Base_A, Base_B
{
public:
Parent (int a1, int a2, int b1, int b2);
}
父.cpp
Parent::Parent (int a1, int a2, int b1, int b2) :Base_A(a1,a2), Base_B(b1,b2)
{
//....
}
编译时出现以下错误:
no instance of constructor "Base_A::Base_A" matches the argument list -- argument types are: (int, int)
no instance of constructor "Base_B::Base_B" matches the argument list -- argument types are: (int, int)
【问题讨论】:
-
base(int a, int b);是错字吗? -
“不确定如何解决” 讲述了一个故事,但没有描述问题。到底发生了什么?正如上面的注释所指出的,您的
Base类根本没有构造函数。此外,Parent构造函数是私有的。 -
抱歉,是的,'base' 是一个错字,我没有为 Parent 构造函数添加公共行。我简化了我拥有的原始代码。
-
您要解决的实际问题是什么?
-
您的
Base_A和Base_B类都没有显式构造函数。无论如何,这与“多个类实例”无关。暂时摆脱其中一个,专注于构建一切。然后,一旦你弄清楚如何使用仅从Base_a继承的Parent来做到这一点,那么一切都会变得一清二楚。
标签: c++ class inheritance