[英]Forward Declaration and Accessing member functions in an inherited class
我正在構建一個簡單的組件架構,並且一直在努力解決前向聲明的問題
組件架構構建如下
組件類:
#pragma once
class GameObject;
class Component
{
public:
Component();
virtual ~Component();
virtual void Start();
virtual void Update(float _fDeltaTime);
template<typename T>
T* GetComponent()
{
T* c = m_GameObject->GetComponent<T>();
return c;
}
GameObject& GetGameObject();
void SetGameObject(GameObject& go);
private:
GameObject* m_GameObject;
};
游戲對象類
class GameObject
{
public:
GameObject(std::string name);
~GameObject();
template<typename T>
T* GetComponent()
{
for (auto i : m_vecComponents)
{
T* c = dynamic_cast<T*>(i);
if (c != nullptr)
{
return c;
}
}
return nullptr;
}
void AddComponent(std::string _strComponentName);
void Start();
void Update(float _fDeltatime);
private:
std::string m_Name;
std::vector<Component*> m_vecComponents;
};
示例繼承組件,精靈渲染器
class SpriteRenderer : public Component
{
public:
SpriteRenderer();
~SpriteRenderer();
void Start() override;
void Update(float _fDeltaTime) override;
void ChangeTexture(bool _bTextured);
void SetColor();
private:
Shader* m_pShader;
Texture* m_pTexture;
int m_iWidth;
int m_iHeight;
unsigned int m_iVAO;
unsigned int m_iVBO;
unsigned int m_iEBO;
std::vector<float> m_vecVertices;
std::vector<unsigned int> m_vecIndices;
// Bools To Control Rendering
bool m_bTexture;
};
這些文件都有一個關聯的 cpp 文件
問題是我需要能夠從 Sprite Renderer 類中的游戲對象獲取組件,這會導致問題,因為我只有前向聲明的游戲對象,所以我無法訪問這些成員函數。
我嘗試過的事情
這些解決方案都沒有奏效,所以我能得到任何幫助將不勝感激
問題是 SpriteRenderer.cpp 沒有包含 GameObject.h
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.