C++程序中未知的问题:代码::块
我正在调试一段代码。这真的很简单,但我被卡住了 以下是编译器所说的: 在函数void初始化中: 第35行错误:在“-”标记之前应为非限定id 下面是代码:C++程序中未知的问题:代码::块,c++,function,class,codeblocks,C++,Function,Class,Codeblocks,我正在调试一段代码。这真的很简单,但我被卡住了 以下是编译器所说的: 在函数void初始化中: 第35行错误:在“-”标记之前应为非限定id 下面是代码: #include <iostream> #include <string> #include <cmath> using namespace std; class vars { public: int coins; int coins_sec; int gtx750ti; /
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
class vars
{
public:
int coins;
int coins_sec;
int gtx750ti; // The amount of GTX750ti owned by the player
int gtx760; // The amount of GTX760 owned by the player
int gtx770;
int gtx780;
int gtxtitan;
int gtxtitanB;
int gtxtitanZ;
int r9270;
int r9270x;
int r9280;
int r9280x;
int r9290;
int r9290x;
int r9295x2;
int gpuNames[14]; // The names of the different GPUs
int maxPower; // The maximum power the PSU can deliver to the components
};
void initialization()
{
vars.gpuNames[0] = "gtx750ti";
vars.gpuNames[1] = "gtx760";
vars.gpuNames[2] = "gtx770";
vars.gpuNames[3] = "gtx780";
vars.gpuNames[4] = "gtxtitan";
vars.gpuNames[5] = "gtxtitanB";
vars.gpuNames[6] = "gtxtitanZ";
vars.gpuNames[8] = "r9270";
vars.gpuNames[9] = "r9270x";
vars.gpuNames[10] = "r9280";
vars.gpuNames[11] = "r9280x";
vars.gpuNames[12] = "r9290";
vars.gpuNames[13] = "r9290x";
vars.gpunames[14] = "r9295x2";
}
int main()
{
vars vars;
initiation();
return 0;
}
正如其他人的评论所指出的,不管大小写如何,我们都不希望类和变量具有相同的名称 此外,标识符名称区分大小写。因此,gpuNames与gpuNames不同 也就是说,我建议您将名称数组设置为静态和常量。这将允许编译器创建一个数据表,并让代码直接访问该表;不会进行任何作业 例如:
static const char * gpu_name_table[] =
{
"gtx750ti";
"gtx760";
"gtx770",
"gtx780",
"gtxtitan",
"gtxtitanB",
"gtxtitanZ",
"r9270",
"r9270x",
"r9280",
"r9280x",
"r9290",
"r9290x",
"r9295x2",
};
static const unsigned int number_of_gpu_names =
sizeof(gpu_name_table) / sizeof(gpu_name_table[0]);
上面的数组习惯用法允许您添加GPU名称,而无需更改程序中的任何其他变量。_gpu_名称的变量号_由编译器赋值 vars是一个类。不能说vars.gpuNames[0]之类的东西。在初始化范围内,vars是一种类型而不是变量,并且您正在访问的成员不是静态的。为什么您认为这应该有效?要明确的是:您使用了vars作为类型和变量的名称,但类型在全局可见,而变量仅在main内部可见。gpuNames也是一个整数,您使用字符串对其赋值,这会给您带来一些编译错误,如果您得到了post,那么vars的名称将同时是一个类型和一个变量。