我想暴露一个静态变量。我尝试过这只是一个公共静态和使用访问函数,但是当我在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)|
由于
答案 0 :(得分:4)
仅在类中列出static
类数据成员声明它们。它们仍然必须在某处定义。将此定义放入一个.cpp文件中:
Framework *Stage::systemFramework;
答案 1 :(得分:2)
那是因为你在某处也需要FrameWork* Stage::systemFramework;
(通常在.cpp文件中)。这可以“放置”你的变量,例如出于缓存的原因,将它放在一些其他变量旁边 - 所以编译器不会把它扔到任何地方,所以类定义中的声明只是那个,声明“那里将是某个地方的变量之一“。 [或者在嵌入式系统中,可能有一部分内存由电池电源备份,另一部分内存不是,而且,在这种情况下,“放置”变量的位置也很重要]。
当然,类中的public
,private
或protected
仍将确定代码的哪些部分可以访问变量。