令牌之前的预期主表达式'-'
Expected primary-expression before '-' token
但是我的代码中没有这个标记('-')。我所做的只是尝试分配一个colors
枚举类类型的变量,这是每种情况下colors
的可能值之一,并且出现此错误:
error: expected primary-expression before '-' token
在每个案例陈述的每个第一个陈述中。有人可以解释此错误以及为什么会发生吗?
完整代码:
源文件
#include "Bunny.h"
#include <cstdlib>
#include <time.h>
#include <string>
#include <iostream>
using namespace std;
Bunny::Bunny() : radioactive_mutant_vampire_bunny(false), age(0)
{
srand(time(NULL));
if(rand()%100 + 1 <= 2)
radioactive_mutant_vampire_bunny = true;
switch(rand()%4 + 1){
case 1:
color = colors.WHITE;
break;
case 2:
color = colors.BROWN;
break;
case 3:
color = colors.BLACK;
break;
case 4:
color = colors.SPOTTED;
break;
default:
cout << "The number entered is outside the range of 1 to 4.";
break;
}
name = names[rand()%names.size()];
}
Bunny::~Bunny()
{
//dtor
}
页眉
#ifndef BUNNY_H
#define BUNNY_H
#include <string>
using namespace std;
class Bunny
{
public:
Bunny();
virtual ~Bunny();
protected:
private:
enum class sex{MALE, FEMALE};
sex sex;
enum class colors{WHITE, BROWN, BLACK, SPOTTED};
colors color;
int age;
string names[6] = {"Berry", "Jerry", "Terry", "Marie", "Perry", "Kerry"};
string name;
bool radioactive_mutant_vampire_bunny;
};
#endif // BUNNY_H
-
colors.WHITE
是Java风格。在C++你应该像colors::WHITE
一样写. -
names.size()
无效names
因为它不是一个类,而是一个数组。
试试这个:
Bunny::Bunny() : radioactive_mutant_vampire_bunny(false), age(0)
{
srand(time(NULL));
if(rand()%100 + 1 <= 2)
radioactive_mutant_vampire_bunny = true;
switch(rand()%4 + 1){
case 1:
color = colors::WHITE;
break;
case 2:
color = colors::BROWN;
break;
case 3:
color = colors::BLACK;
break;
case 4:
color = colors::SPOTTED;
break;
default:
cout << "The number entered is outside the range of 1 to 4.";
break;
}
name = names[rand()%(sizeof(names)/sizeof(*names))];
}
enum class sex{MALE, FEMALE};
sex sex;
enum class
的名称是sex
,您不能再次使用sex
,重命名您的成员:sex _sex;
case 1:
color = colors.WHITE;
break;
case 2:
color = colors.BROWN;
break;
case 3:
color = colors.BLACK;
break;
case 4:
color = colors.SPOTTED;
break;
这不是enum classes
的工作方式。使用 ::
运算符而不是 .
运算符。
您的strings
数组是纯 C 数组,纯数组没有size()
方法,要么使其成为vector
,要么使用 sizeof
习惯用法检查数组长度。
相关文章:
- holeMenuProgram.cpp:38:1 错误:'}'令牌之前的预期主表达式
- (错误:令牌之前'<<'预期的主表达式)
- 错误:C++中']'令牌之前的预期主表达式
- 错误:令牌之前的预期主表达式'&&'
- 令牌之前']'预期的主表达式?
- 错误:令牌之前的预期主表达式'/'
- 正则表达式使用提升令牌迭代器在单引号和括号之间提取值
- 令牌之前')'预期的主表达式(需要"template"消除歧义器)
- 错误:令牌之前的预期主表达式'<':Arduino RGB 舞灯
- 令牌之前出现错误')'主表达式
- C++错误:错误:令牌之前的预期主表达式'||'
- 令牌问题之前'*'预期的主表达式
- 令牌之前的预期表达式']'?C
- 退出状态 1 令牌之前的预期主表达式'.'
- C++错误:";"之前应为主表达式使用Cmake的令牌
- 向量空Push_back在令牌之前调用'{'预期的主表达式
- 令牌调用之前'...'预期的主表达式 模板化类的模板化方法
- 错误 预期主表达式在 ';" 之前令牌 C++
- 令牌之前的预期主表达式'-'
- 令牌之前的预期主表达式'<'