如何从另一个类访问函数?

时间:2014-02-04 09:47:26

标签: c++ function class methods

可能是个愚蠢的问题,但我找不到答案(即使在这里)。

我已将所有课程拆分为单独的文件(cpp + h)。我有getValue()setValue()等方法。我有一个名为Player的类(这基本上是具有整数变量的数据库)。我创建了一个名为player (Player *player = new Player;)的对象。现在我需要从任何其他类(在另一个文件中分隔)访问该对象。问题是我甚至无法访问getValue() / setValue()方法。

我需要的是从表格2中的Delphi From1.player.item[0]=3访问,其中记录了播放器。

UPD:

这是我的代码:

Player.cpp

#include "player.h"
#include "gameform.h"

Player::Player()
{
}

void Player::check(){
    //I should be able to check if player dead or not from my Battle class
}

player.h

#ifndef PLAYER_H
#define PLAYER_H

class Player
{
public:
    Player();
    void check();
};

#endif // PLAYER_H

Battle.cpp

#include "battle.h"
#include "player.h"
#include "game.h"

Battle::Battle()
{
}

void Battle::hit(){
//if I hit I should check am I dead yet
    player.check();
}

这就是玩家在游戏类(现在)中声明的方式:

Player *player = new Player;

在任何功能之外,只是在课堂上。

玩家是对象,在Game类中创建。一切都是公开的。

*我甚至尝试在main.cpp中创建对象(main()函数内外),没有任何工作,很奇怪= /

这是github“temp”分支,编译和工作。但如何访问播放器? :)

https://github.com/ewancoder/game/tree/temp

UPD:另一个愚蠢的问题:如果我想在我的班级1中负责打开文件和另一个 - 编辑和关闭文件,如果一个人无法从另一个读取变量,我怎么能这样做呢?

4 个答案:

答案 0 :(得分:1)

我不确定你想要什么,但如果你有这样的课程:

<强> a.hpp

Class A {
    public:
       void foo();
};

<强> a.cpp

#include "a.hpp"
void A::foo() {}

你可以像这样使用它:

<强> b.hpp

#include "a.hpp"
class B {
   public:
      void stuff(A& a);
};

<强> b.cpp

#include "b.hpp"
void B::stuff(A& a) { a.stuff(); }

答案 1 :(得分:0)

你需要给另一个对象提供第一个对象的引用。要么直接在构造函数中,要么稍后通过方法。

或者可选地,您可以将玩家存储在全局变量中,并通过全局变量访问它。

问题在于方法绑定到对象的特定实例 - 因此您需要该实例来调用它们

答案 2 :(得分:0)

您需要在语句末尾添加括号并使用->运算符,而不是.运算符:player->check()

这是因为它是指向对象Player *player的指针而不是对象本身Player player

答案 3 :(得分:0)

您的问题有点难以理解,有些答案反映了这一点。但是,在我看来,您遇到的实际上是系统设计中至关重要的一部分。有许多策略和许多注意事项,但基本上由您来设计对象可以访问正在运行的程序中其他对象内容的路径。

一些常见的技术包括 全局变量

extern Player *PlayerOne;
PlayerOne->item[0]=3;

类中的静态变量(或集合)。

class Player {
public:
Player* Players;
}

Player::Players[0]->item[0]=3;

成员变量。

Board.Add(new Player(Board));

Board.m_player->item[0]=3;

变化无穷无尽。如果您需要特定代码,则需要更具体。