继承的构造函数 - 定义可移植的固定大小类型(C ++)

时间:2015-12-29 13:01:12

标签: c++ inheritance constructor fixed-size-types

我有一个带有它的构造函数的基类,以及一个继承的类,它有自己的构造函数,它做同样的事情,但也增加了一些额外的指令。

class i_base //Base class for any interface objects
{

public:

    ...//declare some things

    i_base(sf::RenderWindow & rw);

    virtual ~i_base();
};

class IButton
    :public i_base
{
private:

    int w, h;

public:

    IButton(sf::RenderWindow & rw, sf::Image & teximg, 
            int x, int y, int width, int icon);

    ~IButton();
};

问题在于,当我尝试通过这样做来初始化继承类构造函数中的基类构造函数时:

IButton::IButton(sf::RenderWindow & rw, sf::Image & teximg, 
                 int x, int y, int width, int icon) 
    : i_base(sf::RenderWindow & rw)
{
    ... //do some things
}

我不会编译,因为我的解析器说sf :: RenderWindow是不允许的类型,似乎它只接受固定大小的类型。所以我已经改变了i_base构造函数的声明,将int作为参数,并且错误消失了,但当然它在我的代码中没有任何意义。有没有办法初始化非固定大小类型的基础构造函数?我试过用指针,但它似乎没有解决任何问题。

1 个答案:

答案 0 :(得分:4)

应该只是

IButton::IButton(sf::RenderWindow & rw, sf::Image & teximg,
int x, int y, int width, int icon) : i_base(rw)
{
    ... //do some things
}

表示将rw发送给i_base构造函数。