int main(int argc, char *argv[]) { QApplication a(argc, argv); //注册外部的二进制资源文件 QResource::registerResource(GAME_RES_PATH); MainScene w; start s; connect(&s,&start::switchWindow(),&w,&MainScene::playGame()); s.show(); return a.exec(); } 报错E:\bird\bird\bird\main.cpp:19: error: cannot call member function 'void start::switchWindow()' without object connect(&s,&start::switchWindow(),&w,&MainScene::playGame()); ^E:\bird\bird\bird\main.cpp:19: error: cannot call member function 'void MainScene::playGame()' without object connect(&s,&start::switchWindow(),&w,&MainScene::playGame()); ^ 、
时间: 2024-04-15 07:29:34 浏览: 118
C语言中 int main(int argc,char *argv[])的两个参数详解
根据您提供的错误信息,问题出在了`connect`函数的使用上。在`connect`函数中,信号和槽函数的连接应该使用函数指针的形式,而不是调用函数的形式。因此,在连接信号和槽函数时,不应该在函数名后面加上括号。
请将以下代码中的`connect`函数调用改为如下形式:
```cpp
connect(&s, &start::switchWindow, &w, &MainScene::playGame);
```
去掉了信号和槽函数名后面的括号。
修改后的代码如下:
```cpp
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//注册外部的二进制资源文件
QResource::registerResource(GAME_RES_PATH);
MainScene w;
start s;
connect(&s, &start::switchWindow, &w, &MainScene::playGame);
s.show();
return a.exec();
}
```
请注意,您还需要确保`start`类中定义了名为`switchWindow`的信号,以及`MainScene`类中定义了名为`playGame`的槽函数,并正确包含了相应的头文件。
希望这能解决您的问题。如果还有其他问题,请随时提问。
阅读全文