我试图从虚函数调用私有派生类方法,但我无法弄清楚如何从虚函数调用派生类的函数。
这是Game.h中Game类中的虚函数声明
virtual void Screen::KeyListener::onChar(char c);
当我在不同的.cpp文件中定义此函数时,我无法弄清楚如何访问Game类中声明的任何方法。我只能从Screen类中调用函数。
我尝试过像这样的东西
Game::makeMove(1);
(其中make move是Game类中定义的私有成员函数)
但这只是给我错误“非静态成员引用必须与特定对象相关”。
抱歉,如果我的措辞/术语稍微偏离,我仍然是c ++的新手。我的大多数经验都是用java。
答案 0 :(得分:0)
你可以使用静态代码如下代码:
静态成员函数
这些函数适用于整个类而不是a 一个特殊的对象。
可以使用对象和直接成员访问来调用它。 运营商。但是,通过调用静态成员函数更为典型 本身,使用类名和范围resolution :: operator。
示例:
class X
{
public:
static void f(){};
};
int main()
{
X::f(); // calling member function directly with class name
}
这些函数不能访问普通数据成员和成员函数,只能访问静态数据成员和静态成员函数。
它没有任何“this”关键字,这是它无法访问普通会员的原因。
答案 1 :(得分:0)
你确定这个定义实际上是在类Game中定义函数onChar而不是在类Screen中吗?如果你不小心把它写成onChar的定义(我可以想象很容易发生):
void Screen::KeyListener::onChar(char c) {}
然后你在类Screen中定义函数。