我一直在尝试将保存所有变量的结构传递给多个函数,这些函数保存在单独的类中。我知道该错误最有可能与某种语法错误有关,但我看不出我做错了什么。
main.ccp是:
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <fstream>
#include "running.h"
using namespace std;
int main()
{
//------Class Objects---------
running runObj;
//----------Vars--------------
char saveGame = 'N';
struct gameVar
{
int correctGuesses; // These vars need to be reset for each new game.
int Lives;
int rowCorrect;
int highScore;
char anotherGame;
} values;
values.highScore = 12;
values.anotherGame = 'Y';
//--------Game Loop-----------
// int highScore2 = runObj.readHighScore();
while (values.anotherGame = 'Y')
{
struct gameVar = runObj.processGame(gameVar);
struct gameVar = runObj.afterText(gameVar);
gameVar values;
values.anotherGame;
}
cout << endl << "-------------------------------------------------------" << endl;
cout << "Would you like to save your high score? Y/N" << endl;
cin >> saveGame;
if(saveGame == 'Y')
{
runObj.saveHighScore(gameVar);
}
return 0;
}
我的头文件是:
#ifndef RUNNING_H
#define RUNNING_H
class running
{
public:
struct gameVar processGame(struct gameVar);
void saveHighScore(struct hs);
int readHighScore();
struct gameVar afterText(struct gameVar);
};
#endif // RUNNING_H
最佳答案
首先,一个简单的问题:您正在=
循环条件中使用while
,这会将值'Y'
分配给gameVar.anotherGame
。您真正想要的是==
,以测试是否相等。
看一下这一行:
struct gameVar = runObj.processGame(gameVar);
您想在这里做什么?
gameVar
是结构的名称,而不是gameVar
类型的对象。您的对象实际上称为values
。也许您想执行以下操作:values = runObj.processGame(values);
下一行也一样。
出现这种困惑的原因似乎是因为在创建该类型的对象的同时定义了
struct
。称为struct
的gameVar
只是对象的蓝图,您创建了一个与名为values
的蓝图匹配的对象:struct gameVar
{
// ...
} values;
如果将
struct
函数之外的main
定义为:struct gameVar
{
// ...
};
然后在
main
中使用以下命令创建它的实例:gameVar values;
您必须将此
values
对象传递给函数-您不能传递类型,而gameVar
就是类型。我不确定您当时打算做什么:
gameVar values;
values.anotherGame;
这将在
values
循环内重新定义while
对象,并且在循环结束时将其销毁。然后,您访问数据成员anotherGame
,但不对其执行任何操作。也许您正在寻找:gameVar values;
values.highScore = 12;
values.anotherGame = 'Y';
while (values.anotherGame == 'Y')
{
values = runObj.processGame(values);
values = runObj.afterText(values);
}
值得注意的是,在C ++中,不需要在每次使用
struct
类型之前都放置gameVar
。类型名称仅为gameVar
。也就是说,您可以将processGame
的声明更改为:gameVar processGame(gameVar);
关于c++ - 传递结构错误“'=' token 之前的unqualified-id”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14781201/