如何在c++中构建一个非静态入口点
How do you build a non static entry point in c++?
我正尝试从我的主要入口点RPG.cpp初始化我的游戏引擎。以下是它所包含的内容:
#include "stdafx.h"
#include "Engine.h"
int _tmain(int argc, _TCHAR* argv[])
{
Engine::Go();
return 0;
}
Engine:Go()是一个启动游戏引擎的公共方法。但是,它的下划线显示了以下错误:"错误:非静态成员引用必须相对于特定对象"
检查我的引擎类并将其中的所有内容设置为静态可以解决问题,但这本身就是一个问题。如何绕过此错误而不使用关键字static?
创建一个Engine
的实例并在其上调用Go()
Engine e;
e.Go();
static
函数基本上是可以访问所属类的private
static
成员的自由函数。我所说的"自由函数"是指它们不属于实例,并且基本上像普通的C函数一样(除了它们的特殊访问权限)。
非static
函数必须在其所属类的实例上调用。
class Klass {
int i;
static int s_i;
public:
static void static_func() {
// called without an instance of Klass
// s_i is available because it is static
// i is not available here because it is non-static
// (belongs to an instance of Klass)
}
void non_static_func() {
// called on an instance of Klass
// s_i is available here because non_static_func() is a member of Klass
// i is also available here because non_static_func() is called on
// an instance (k) of Klass
}
};
void free_func() {
// s_i and i are both unavailable here because free_func()
// is outside of Klass
}
int main() {
// Klass::static_func() is called without an instance,
// but with the name qualifier Klass:
Klass::static_func();
// Klass::non_static_func() is called with an instance:
Klass k;
k.non_static_func();
// free_func() is called without any instance, and without a name qualifier:
free_func();
}
您必须实际创建Engine
类的实例。
Engine e;
e.Go();
您可能需要非静态成员函数和…
Engine engine;
engine.Go();
static
成员函数不需要在特定的对象实例上调用,但是这样它们就没有隐式的this
指针或非static
成员变量可以访问——它们只能访问类的其他static
成员。
相关文章:
- 分离一个静态常量 std::thread?
- 从另一个静态常量数组初始化静态常量数组(只需少量计算)
- 如果两个静态库使用相同的另一个静态库,如何避免"LNK2005 Already Defined error"?
- 我可以使用 constexpr 函数声明一个静态数组吗?
- 我正在尝试在我的类中创建一个静态成员,但编译器警告我它是未定义的
- 一个静态变量多副本
- 两个C++库如何共享一个静态缓冲区?
- 为什么静态指针返回函数中有一个"静态"键?
- C++ 给出编译器错误,将一个(静态)常量全局变量设置为另一个静态常量变量
- cmake-创建一个静态库
- 对另一个静态库中静态库方法的未定义引用
- 如何创建一个静态类来引用带有C++的字符串变量
- QMAKE:将静态库链接到另一个静态库
- 长镜头 -- 可能有一个静态类成员,该类成员具有访问非静态成员的 lambda
- 为 c++ 构建一个静态库,该库在内部依赖于第三方库
- 使用类模板参数推导来创建一个静态接口
- 具有两个动态维度和一个静态维度的多维数组
- 创建一个静态包含ffmpeg的共享库
- NetBeans创建一个静态库C
- 在抽象类中,可以使用抽象类A的类型创建一个静态字段