所以现在我只是想设置一个简单的类,并且无法弄清楚为什么我会出错。这是我的头文件:
#define Mob
class Mob{
private:
int lvl;
float hp;
public:
Mob(int, float); //Error expected an identifier on the float
};
和带有它的cpp文件
#include "Mob.h"
Mob::Mob(int level, float health) // Error expected an identifier on the int and float
// and an Error: Expected a ; after the )
{
hp = health;
lvl = level;
}
答案 0 :(得分:14)
这一行:
#define Mob
导致单词Mob
的每个实例都替换为代码中的任何内容。不要那样做。
看起来你想制作一个include guard,看起来应该是这样的:
#ifndef MOB_H
#define MOB_H
...
#endif
答案 1 :(得分:9)
您将Mob
定义为......没有。这使您的代码等同于:
class {
private:
int lvl;
float hp;
public:
(int, float); // Expecting an identifier indeed
};
这适用于包含#define Mob
的其余代码。
如果您正在尝试制作包含警卫,则需要一个唯一的名称并将其定义为条件:
#ifndef UNIQUE_MOB
#define UNIQUE_MOB
// code
#endif
答案 2 :(得分:0)
据我所知,除了处理器指令(例如宏,符号常量等)外,C ++指令中存在的所有内容都称为实体。 关于指针,请记住,为便于应用,请将它们想象为整数变量,其职责是保持内存存储单元的地址 这是您第一次学习指针的好技巧
答案 3 :(得分:0)
首先,您可以删除#define mob
。您要做的就是#pragma once
,以避免两次将.h文件包括在内。正如我在这里看到的,您有两个文件,分别称为mob.h和mob.cpp。像下面的代码一样,可以将文件放在mob.h中,而不用拥有两个不同的文件,并且由于仅在构造函数中初始化变量,因此可以在()和{}括号之间使用:运算符。 lvl(level)
中括号前面的变量名称是您的类中定义的变量,括号内的变量名称是函数中的变量。
#pragma once
class mob
{
private:
int lvl;
float hp;
public:
mob(int level, float health)
: lvl(level), hp(health) {}
};