Мне нужно вызывать свойства и функции объекта из другого класса.
Идея заключается в передаче 'this' в качестве параметра другому конструктору класса.Например:
instance = ClassName(this);
А затем выполните:
ParentClass parentInstance;
ClassName::ClassName(MainApp _instance){
parentInstance = _instance;
}
Однако мой компилятор говорит, что ParentClass не называет тип.Идеи?Кроме того, я должен использовать указатель для экономии памяти?Как?
Заранее спасибо.
ОБНОВЛЕНИЕ:
Хорошо, извините за задержку.Здесь идет фактический код.Сначала простой класс.
Класс игры:
Заголовочный файл
#ifndef _GAME
#define _GAME
#include "ofMain.h"
class Game{
public:
Game();
~Game();
void hi();
};
#endif
Файл cpp:
#include "Game.h"
Game::Game(){}
Game::~Game(){}
void Game::hi(){
cout << "hi, I'm game! " << endl;
}
Затем из MainApp создаюобъект: - Соответствующий код в заголовочном файле:
#ifndef _MAIN_APP
#define _MAIN_APP
#include "ofMain.h"
#include "Game.h"
class MainApp : public ofSimpleApp{
public:
Game game;
};
#endif
Соответствующий код в файле cpp:
game = Game();
game.hi();
Это, очевидно, работает, поскольку я создаю только кровавый объект.Однако проблема возникает с композицией.
Я мог бы передать главное приложение в качестве аргумента в конструкторе, я мог бы передать его через game.setParent (this); ... проблема в том, что я даже не могу определитьпеременная для хранения ссылки на приложение.
Например: (что делает его простым / неэффективным без указателей или чего-либо еще)
Game.h:
#define _GAME
#ifndef _GAME
#include "ofMain.h"
#include "MainApp.h"
class Game{
MainApp app;
public:
Game();
~Game();
void hi();
};
#endif
ВозвращаетОшибка «не называет тип» и объявление class MainApp
возвращает ошибку «неполный тип»
Я уверен, что делаю что-то глупое.
ОБНОВЛЕНИЕ2:
Проблема этого метода заключается в том, что я не могу сейчас вызвать функцию заостренного объекта.
Это Game.h:
#ifndef _GAME
#define _GAME
#include "ofMain.h"
class MainApp;
class Game{
public:
Game();
Game(MainApp* _app);
~Game();
void hi();
MainApp* app;
};
#endif
Как видите, приложение (типа MainApp) передается в качестве параметра.Это нормально, MainApp существует, так как это предварительное объявление.Однако, когда я пытаюсь вызвать любую из функций приложения, я не могу (ошибка компилятора, говорящая о Запросе члена appHi в ...., который не является типом класса 'MainApp'.
MainApp НЕ включен в Игру.h, но Game.h включен в MainApp.h.
Идеи?