小编nil*_*ert的帖子

从基类继承两次时如何解决“错误:没有匹配的函数可供调用”

我目前正在尝试在我的项目中实现多种继承类。因此,我正在使用成员初始化器列表,并将“变量”一直引用到基类。我真的不确定,为什么会出现编译器错误。

我已经尝试将引用“ int&id”更改为指针“ int * id”。上面的示例只是指出我的问题的一个最小示例:

class Base
{
public:
    int& m_id;

    Base(int &id)
        : m_id(id)
    {
    }
};

class Derived1: virtual public Base
{
public:
    Derived1(int &id) : Base(id)
    {
    };
};

class Derived2: public Derived1
{
public:
    Derived2(int &id) : Derived1(id)
    {
    };
};

int main()
{
   int i = 13;
   Derived2 Test(i);
}
Run Code Online (Sandbox Code Playgroud)

尝试编译时出现以下错误消息:

“错误:没有匹配的函数可以调用'Base :: Base()'”

任何想法,我在做什么错?

谢谢你的帮助。

c++ inheritance initializer-list

5
推荐指数
1
解决办法
111
查看次数

标签 统计

c++ ×1

inheritance ×1

initializer-list ×1