我有一个带有它的构造函数的基类,以及一个继承的类,它有自己的构造函数,它做同样的事情,但也增加了一些额外的指令。
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作为参数,并且错误消失了,但当然它在我的代码中没有任何意义。有没有办法初始化非固定大小类型的基础构造函数?我试过用指针,但它似乎没有解决任何问题。
答案 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
构造函数。