回 帖 发 新 帖 刷新版面

主题:关于多重继承的菜鸟问题

这是一个用虚基类的例子,可是编译时总是出错,实在不知道错在哪了?大虾指点下迷津呐[em15]
#include <iostream>

using namespace std;

class Base
{
    protected:
        int x;
    public:
        Base(){}
        Base(int ix);
        void output() const;
};

Base::Base(int ix)
{
    x = ix;
}

void Base::output() const
{
    cout << "X = " << x << "!" << endl;
}

class D1: virtual public Base
{
    protected:
        int y;
    public:
        D1(){}
        D1(int ix, int iy);
        void output() const;
};

D1::D1(int ix, int iy): Base(ix)
{
    y = iy;
}

void D1::output() const
{
    cout << "X = " << x << "!" << endl; 
    cout << "Y = " << y << "!" << endl;
}

class B: virtual public Base
{
    protected:
        int z;
    public:
        B(){}
        B(int ix, int iz);
        void output() const;
}

B::B(int ix, int iz): Base(ix)
{
    z = iz;
}

void B::output() const
{
    cout << "X = " << x << "!" << endl;
    cout << "Z = " << z << "!" << endl;
}

class A: public D1, public B
{
    private:
        int t;
    public:
        A(){}
        A(int ix, int iy, int iz, int it);
        void output() const;
};

A::A(int ix, int iy, int iz, int it): D1(ix, iy), B(ix, iz), Base(ix)
{
    t = it;
}

void A::output() const
{
    cout << "X = " << x << "!" << endl;
    cout << "Y = " << y << "!" << endl;
    cout << "Z = " << z << "!" << endl;
    cout << "T = " << t << "!" << endl;
}

int main()
{
    A a(2, 3, 4, 5);
    a.output();
    return 0;
}

编译报错:
: error C2533: 'B::B' : constructors not allowed a  return type
: error C2264: 'B::B' : error in function definition or declaration; function not called

回复列表 (共1个回复)

沙发

编程要细心,你的class B少了个分号
class B: virtual public Base
{
    protected:
        int z;
    public:
        B(){}
        B(int ix, int iz);
        void output() const;
};

我来回复

您尚未登录,请登录后再回复。点此登录或注册