命名空间:不能在没有对象的情况下调用成员函数
namespace: cannot call member function without object
我正在命名空间内创建一个事件队列,目标是能够从任何地方调用它(如静态类函数(。
所以我在事件管理器中有一个命名空间。
namespace atreus {
class Event;
class EventManager {
private:
std::queue<Event *> events;
public:
void pushEvent(Event *event);
bool pollEvent(Event *event);
};
}
然后我尝试在另一个类中调用 pushEvent,如下所示:对象.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 添加到一个类中并在命名空间内创建一个事件管理器事件管理器,但什么都没有......
void pushEvent(Event *event);
这是一个非静态函数,没有对象就不能调用它。在某个地方,您应该有一个 EventManager
实例并使用该实例调用pushEvent()
如果您希望能够在没有对象的情况下调用此函数,则需要将此函数标记为静态。
static void pushEvent(Event *event);
您需要在使用
对象之前创建它。
atreus::EventManager mgr;
mgr.pushEvent(event);
但是您还需要考虑对象的生存期。
最好使用事件管理器的接口作为类成员,并在构造函数中注入类。
相关文章:
- 如果 std::vector::clear() 不是静态的,如何在没有实例的情况下调用它?
- C++ - 如何在不调用其属性的情况下调用类?
- C++ 在不释放内存的情况下调用析构函数
- Python在不引用类名的情况下调用类函数
- 为什么在这种情况下调用非常量右值移动构造函数?
- 是否可以在没有显式专用化的情况下调用可变参数模板函数?
- 使用按引用调用时,不能在没有对象的情况下调用成员函数 const
- 您可以在不调用构造函数的情况下调用攻击器吗?
- 命名空间:不能在没有对象的情况下调用成员函数
- 哪些语言将在没有显式桥接的情况下调用C++
- 如何在不重新索引顶点的情况下调用"boost::remove_vertex"?
- C :在没有对象实例的情况下调用非静态成员函数
- 在不实例化的情况下调用不同派生类的虚拟方法
- C 如何在没有错误的情况下调用void函数
- 在MSVC上的数组初始化期间,destructor在不复制或移动构造方的情况下调用
- 在不指定实例化的情况下调用类模板的静态方法的方法
- 为什么INVOKE总是取消引用数据成员,而不是在可能的情况下调用
- 是否可以在不实例化派生类的情况下调用该类的虚拟函数
- 无法在没有对象的情况下调用成员函数(尽管我相信我确实初始化了它)
- 为什么在没有赋值运算符的情况下调用转换构造函数