从移交的类中调用对象

Posted

技术标签:

【中文标题】从移交的类中调用对象【英文标题】:Calling Object from a handed over class 【发布时间】:2018-05-10 06:24:56 【问题描述】:

你能帮我在移交对象的类后如何调用类中的对象吗?

所以我有一个 Game.cpp,我在其中创建所有对象的构造函数。

Game.cpp

//CONSTRUCTOR
Game::Game(Sep::Interface &io, std::string config): config_(config)


  ... some other things ..
//creating objects
  Sep::Property Obstacle(Sep::Field::FieldType::WATER,"OBSTACLE", 'O', true, false, 10, 20);
  Sep::Property Street(Sep::Field::FieldType::WATER,"STREET", 'S', true, false, 20, 10);

;

在 Game.h 中,您可以看到它的 Consturctor Game.h

  class Game
  
    public:
      //------------------------------------------------------------------------
      // Game constructor & destructor
      //
      Game(Sep::Interface &io, std::string config);
      ~Game() noexcept;

  ;

现在我有一个类构建,它有一个方法 excecute,它的参数是类 Game,一些参数是向量。

我的问题如何从给定的 Gameclass 参数中调用对象的方法?

BUILD.h

  class Game;

  class Build : public Command
  

    public:
      //------------------------------------------------------------------------
      // Constructor
    Build();

   //------------------------------------------------------------------------
    // Destructor
    ~Build() noexcept ;

     int execute(Game &game, std::vector<std::string> &params);
;

我试过这样的东西,但我不会工作:(: Build.cpp

int Build::execute(Sep::Game &game, std::vector<std::string> &params)
  
    if(params.size() == 4 )
    
      Street s;
          // OR
      game Streets s;
    
  

【问题讨论】:

和你的老师谈谈。您似乎对术语对象和类的含义感到困惑。这个网站不是学习这些广泛基础知识的好地方。 类的前向声明(例如class Game;)可以让您将类用作不完整类型,因此您可以在声明指向该类的指针时使用它。你应该 #include Game.h 文件来提供完整的类声明。 前向声明只是我可以将游戏作为参数移交。正确包含所有其他标头 @Raedwald 也许我在这篇文章中有点混淆了它。我只是不明白如何调用我在excecute方法中交出的游戏类的对象。 你只需要game.param吗? “调用对象”是什么意思? 【参考方案1】:

好的,试一试,但我不能 100% 确定这是否真的是您的问题:

游戏.h:

template <typename T> void USE(const T&) 

namespace Sep

    namespace Field
    
        enum class FieldType  WATER ;
    

    class Property
    
    public:
        Property(Field::FieldType, const char*, char, bool, bool, int,int);
        void SomeFunction();
    ;
    class Interface;


class Command 
    virtual int execute(Game &game, std::vector<std::string> &params) = 0;
;

#include <string>
namespace Sep

class Game

    public:
    //------------------------------------------------------------------------
    // Game constructor & destructor
    //
    Game(Sep::Interface &io, std::string config);
    ~Game() noexcept;

    std::string config_;
    Sep::Property Obstacle;
    Sep::Property Street;


;
 // namespace Sep

游戏.cpp

namespace Sep


Game::Game(Sep::Interface &io, std::string config)
    : config_(config)
    , Obstacle(Sep::Field::FieldType::WATER,"OBSTACLE", 'O', true, false, 10, 20)
    , Street(Sep::Field::FieldType::WATER,"STREET", 'S', true, false, 20, 10)


    USE(io);



构建.h

#include "Game.h"
#include <vector>
namespace Sep


class Build : public Command


    public:
    //------------------------------------------------------------------------
    // Constructor
    Build();

//------------------------------------------------------------------------
    // Destructor
    ~Build() noexcept ;

    virtual int execute(Game &game, std::vector<std::string> &params) override;
;

构建.cpp:

#include "Build.h"
namespace Sep

int Build::execute(Sep::Game &game, std::vector<std::string> &params)

    if(params.size() == 4 )
    
    game.Street.SomeFunction();
    



也许这可以帮助你弄清楚。

【讨论】:

以上是关于从移交的类中调用对象的主要内容,如果未能解决你的问题,请参考以下文章

如何在另一个类中调用列表对象

在继承的类中启动线程

使用netBeans从不同的类实例化一个类中的对象[重复]

C ++ - 通过getter函数在单独的类中从对象指针映射访问成员函数

Pycharm 检查未标记从存根对象继承的类中未解析的引用

调用创建当前类的类中的方法?