公共静态变量访问

时间:2013-06-22 12:17:23

标签: c++ static

我想暴露一个静态变量。我尝试过这只是一个公共静态和使用访问函数,但是当我在Framework类中使用命令Stage::SetFramework( this );时,或者即使我systemFramework公开并使用{{1}我得到了:

Stage::systemFramework = this

我不确定为什么这不起作用。我显然缺少一些可以帮助的人吗?

framework.obj||error LNK2001: unresolved external symbol "public: static class Framework * Stage::systemFramework" (?systemFramework@Stage@@2PAVFramework@@A)|

由于

2 个答案:

答案 0 :(得分:4)

仅在类中列出static类数据成员声明它们。它们仍然必须在某处定义。将此定义放入一个.cpp文件中:

Framework *Stage::systemFramework;

答案 1 :(得分:2)

那是因为你在某处也需要FrameWork* Stage::systemFramework;(通常在.cpp文件中)。这可以“放置”你的变量,例如出于缓存的原因,将它放在一些其他变量旁边 - 所以编译器不会把它扔到任何地方,所以类定义中的声明只是那个,声明“那里将是某个地方的变量之一“。 [或者在嵌入式系统中,可能有一部分内存由电池电源备份,另一部分内存不是,而且,在这种情况下,“放置”变量的位置也很重要]。

当然,类中的publicprivateprotected仍将确定代码的哪些部分可以访问变量。