![](/img/trans.png)
[英]Keep getting error “is not a class or namespace” or “cannot call member function without object”
[英]namespace: cannot call member function without object
我正在命名空間內創建一個事件隊列,目標是能夠從任何地方調用它(如靜態類函數)。
所以我在 eventManager.h 中有命名空間
namespace atreus {
class Event;
class EventManager {
private:
std::queue<Event *> events;
public:
void pushEvent(Event *event);
bool pollEvent(Event *event);
};
}
然后我嘗試在另一個類中調用 pushEvent,例如:object.cpp
inline void createEvent(sf::Vector2f& n, float penetration, sf::Vector2f velocity, float totalMass)
{
atreus::Event *event;
// adding stuff to event
atreus::EventManager::pushEvent(event);
}
然后我收到這個錯誤:
cannot call member function ‘void atreus::EventManager::pushEvent(atreus::Event*)’ without object
atreus::EventManager::pushEvent(event);
我試圖將函數 createEvent 添加到一個類中並在命名空間內創建一個 EventManager eventManager 但什么都沒有...
void pushEvent(Event *event);
這是一個非靜態函數,沒有對象就不能調用它。 在某處你應該有一個EventManager
的實例並使用該實例來調用pushEvent()
如果您希望能夠在沒有對象的情況下調用此函數,則需要將此函數標記為靜態。
static void pushEvent(Event *event);
您需要在使用它之前創建該對象。
atreus::EventManager mgr;
mgr.pushEvent(event);
但是您還需要考慮對象的生命周期。
最好使用 EventManager 的接口作為類成員並將類注入到構造函數中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.