从移交的类中调用对象
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> ¶ms);
;
我试过这样的东西,但我不会工作:(: Build.cpp
int Build::execute(Sep::Game &game, std::vector<std::string> ¶ms)
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> ¶ms) = 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> ¶ms) override;
;
构建.cpp:
#include "Build.h"
namespace Sep
int Build::execute(Sep::Game &game, std::vector<std::string> ¶ms)
if(params.size() == 4 )
game.Street.SomeFunction();
也许这可以帮助你弄清楚。
【讨论】:
以上是关于从移交的类中调用对象的主要内容,如果未能解决你的问题,请参考以下文章