使子类能够使用父类的函数?
Making a subclass be able to use the parent class's functions?
我希望结构体 MenuItem 能够使用 HighlightRectOutline。我该怎么做?
文本.h
class Text {
public:
....
void Text::highlightRectOutline(sf::RenderWindow &window, sf::Color color);
struct MenuItem {
public:
Menu::MenuResult action;
};
亮点矩形轮廓:
void highlightRectOutline(sf::RenderWindow &window, sf::Color color) {
sf::RectangleShape outlineRect;
sf::Vector2f size(Text::getWidth(), Text::getHeight());
outlineRect.setSize(size);
outlineRect.setPosition(Text::getPosition());
outlineRect.setFillColor(sf::Color::Transparent);
outlineRect.setOutlineColor(color);
outlineRect.setOutlineThickness(5);
window.draw(outlineRect);
}
此函数是固定的。向下滚动菜单.h
class Menu {
public:
static enum MenuResult { Exit, Options, Back, ChangeResolution, Play, Nothing };
MenuResult showMMenu(sf::RenderWindow &window);
MenuResult showOMenu(sf::RenderWindow &window);
private:
MenuResult getMenuResponse(sf::RenderWindow &window);
MenuResult handleClick(int x, int y);
Menu::MenuResult Menu::handleButtonHover(sf::RenderWindow &window, Text::MenuItem menuItem, int x, int y);
std::list<Text::MenuItem> menuItems;
};
手柄按钮悬停:
Menu::MenuResult Menu::handleButtonHover(sf::RenderWindow &window, Text::menuItem menuItem, int x, int y) {
sf::Color color(255, 122, 40);
std::list<Text::MenuItem>::iterator it;
for(it = menuItems.begin(); it != menuItems.end(); it++)
{
sf::floatRect menuItemRect = (*it).getRect();
if( menuItemRect.contains(x, y))
menuItem.highlightRectOutline(window, color);
}
return Nothing;
}
这不能使用 getRect 或 menuItem。
帮助将不胜感激。
除了不是已经提到的 sftrabbit 的子类之外,你应该将基类的方法声明为受保护的。这样,它们对子类可见。
相关文章:
- 父类的私有函数会导致对具有相同名称和相似参数的子类中的公共函数的不明确调用
- 两个父类的构造函数的序列
- C++调用使用重写函数的父类函数
- 在父类中公开受保护的构造函数
- 从父类的向量访问子类函数,而无需向下转换
- 将派生类的构造函数声明为父类的友元
- 如何从子类的构造函数初始化父类的私有成员
- 具有纯虚函数和指针数组对象类型的父类的指针数组
- 在父类函数中创建子类 - 可能吗?
- 调用父类函数来比较父类和子类
- 从多重继承中的派生类函数调用适当的父类函数
- 是否有 lint 工具可以检查子类虚拟函数是否与父类定义匹配?
- 无法使父类的虚拟函数正常工作
- 重写子类构造函数中的父类变量
- 构造函数将父类作为参数
- 父类有 26 个构造函数重载.如何在不复制+粘贴 26 个重载的情况下将一个小任务附加到所有构造器?
- 如果不手动完成,子类是否继承父类的析构函数?
- 当函数返回类型为父类时,如何返回子类的对象?
- 将子类的成员函数强制转换为父类
- 如何将 std::unique_ptr<Parent> 与具有受保护虚拟析构函数的只读父类一起使用