(有可能这个问题已经经常被问到,我对这个转发感到抱歉,但我找到的任何东西都没有帮助我,因为我是c ++的初学者)
所以这是一个显示我的问题的例子
我有班级怪物
class Monster{
public:
Monster();
void attack();
private:
int _health;
int _damage;
};
我有班级等级
class Level{
Level();
};
我在“main.cpp”
中创建了Monster类中的对象“snake”#include "Monster.h"
int main(){
Monster snake;
}
现在,如果我想在“Level”课程中使用“snake”,我该怎么办?如果我想做“snake.attack();”在“Level.cpp”中,例如?
如果我在“Level.cpp”中再次声明它,它将是一个单独的对象,它有自己的属性吗?
我一直把我的类的成员函数保持为静态,所以我可以做“Monster :: attack();”在我的程序中的任何地方,但有了这个tachnique我不能有多个对象做不同的事情取决于他们的属性(snake1,snake2,bat1等...)
提前感谢您的帮助! (并对可能重新审核的问题表示抱歉)
答案 0 :(得分:1)
假设那些剪辑是你的.h文件。
你的level.cpp应该是这样的:
#include "level.h" // its own header
#include "monster.h" // header with Monster::attack() declaration
Level::DoAttack(Monster& monster) { // using snake as parameter.
health = health - monster.attack(); // monster hits us, subtract health.
}
monster.h将是
class Monster{
public:
Monster();
void attack();
private:
int _health;
int _damage;
};
和monster.cpp
Monster::attack() {
// code to calculate the attack
}
答案 1 :(得分:0)
我无法完全理解你的问题。但是从我理解的内容来看。我想你想要访问一个在main()中实例化的Monster对象,以便在level里使用。所以,这是你可以做的。在里面添加一个构造函数将一个怪物对象作为参数的等级类。然后实例化一个关卡对象并将怪物对象传递给它。就像这样, 等级l =新等级(蛇);
答案 2 :(得分:0)
通过声明一个类,你没有创建任何对象。您通常通过包含相应的头文件来声明一个类。
所以,在Level.h
你#include <Monster.h>
,你可以在Level
内引用它。
但严重的是,如果不了解声明与定义,头文件(.h),类与对象,指针和引用等基本内容,就不能编写很多C ++代码。最好投资在一本书中或至少在线阅读一些教程。