我有什么:
包含以下内容的类游戏
包含以下内容的类:
包含以下内容的类OpenGLManagement:
这样的事情(我只是让代码对问题有用):
class Piece
{
public:
void rotate(); //rotate this piece
}
class OpenGLManagement
{
public:
doStuff(); //How can I access the rotate() function on the Piece class?
}
class Game
{
public:
Game(OpenGLManagement& openGLObj) : m_openGL(openGLObj) {}
private:
OpenGLManagement& m_openGL; //a reference to my object
std::vector<Piece> m_pieces; //my vector of pieces
}
int main()
{
OpenGLManagement myOpenGL;
Game myGame(myOpenGL);
//...etc
return 0;
}
我的目标:
如何从doStuff()函数访问Piece类的rotate()函数?
在我的代码中可以/应该更改什么才能在良好的C ++实践中实现这一目标?:)
我希望通过引用指向任何地方来避免循环依赖。此外,我需要先创建myOpenGL对象...所以我还不知道对Game对象的引用......
谢谢!
答案 0 :(得分:1)
只需将Piece
课程放在其他课程之上。
答案 1 :(得分:1)
如果正确组织包含,则不会存在循环依赖关系。您不需要OpenGlManagment
课程来定义Piece
,也不需要&#39; Piece&#39;用于OpenGlManagment
类定义。至少我想你的代码是这样的。如果你把函数定义放在* .cpp文件中,只有类定义和转发声明在正确的* .h文件中,一切都应该没问题。像这样:
Piece.h
class Piece
{
public:
void rotate(); //rotate this piece
}
Piece.cpp
#include "Piece.h"
void Piece::rotate(){
//definition here
}
OpenGlManagment.h
class Piece;
class OpenGLManagement
{
public:
void doStuff();
}
OpenGlManagment.cpp
#include "OpenGlManagment.h"
#include "Piece.h"
void OpenGLManagement::doStuff(){
//use your Piece methods here
}
答案 2 :(得分:0)
创建了一个用静态对象实例化其他两个的类。 然后我创建了两个get参考方法。