是否可以向C++结构添加静态变量?

3 c++

尝试向我的struct添加静态变量时出现以下错误:

模块file_name.cpp中未定义的Symbole s2 :: aa

s2是结构的名称,aa是静态变量.我使用的编译器是Turbo C++ 3.0.

我该如何解决这个错误?

Dan*_*ker 13

我想你可能忘了为静态变量定义存储:

int C::v = 0;
Run Code Online (Sandbox Code Playgroud)


Otá*_*cio 8

C中的结构不允许使用静态变量,因为C要求将整个结构元素放在一起.要从结构中获取元素值,请按元素与结构起始地址的偏移量进行计数.

但据我所知,你可以在C++结构中拥有一个静态成员.你得到一个特定的错误(哪个编译器?)

  • Turbo C++ ?? 男人,得到一个真正的编译器. (2认同)
  • 如前所述,该错误不是编译错误;而是编译错误。这是一个链接错误,发生的原因是 s2::aa 没有在任何地方定义。有关如何定义此类变量的示例,请参阅 Nick Meyer 的答案。 (2认同)

Nic*_*yer 6

你为什么这么说?在g ++ 4.1.2下,这编译:

#include <iostream>

struct Test
{
   static int test; // declare (usually in header file)
};

int Test::test = 8; // define (usually in source file)

int
main()
{
   std::cout << Test::test << std::endl;
   return 0;
}
Run Code Online (Sandbox Code Playgroud)