1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | template <typename Component> class ComponentManager : public IObject { template <typename Component> friend Component* AddComponent(const ObjectID objID); template <typename Component> friend void RemoveComponent(const ObjectID objID); template <typename Component> friend Component* GetComponent(const ObjectID objID); template <typename Component> friend Component* HasComponent(const ObjectID objID); public: ComponentManager(); virtual ~ComponentManager(); private: std::unordered_map<ObjectID, Component*> m_ComponentHash; }; | cs |
기존에 있던 코드 잘못올려서 다시 올렸음(하단)
1 2 3 4 5 6 | template <typename Component> inline __declspec(dllexport) ComponentManager<Component>& GetComponentManager() { static ComponentManager<Component> s_ComponentManager; return s_ComponentManager; } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | template<typename Component> inline __declspec(dllexport) bool HasComponent(const ObjectID objID) { ComponentManager<Component>& componentManager = GetComponentManager<Component>(); bool result = false; if (componentManager.m_ComponentHash.count(objID) > 0) { result = true; } if (componentManager.m_ComponentHash[objID] == nullptr) { DebugBreak(); } return result; } | cs |
Error C2248 'ComponentManager<Component>::m_ComponentHash': cannot access private member declared in class 'ComponentManager<Component>'
ComponentManager에서 friend로 해줬는데 왜 멤버로 접근을 못한다는건지 이해가 안됨... 템플릿에서 사용하는건 다름?
코드 모바일에서 하얗게 보임 - dc App