gpt4 book ai didi

C++ 静态声明

转载 作者:行者123 更新时间:2023-11-28 03:07:56 24 4
gpt4 key购买 nike

我试图在 console.h 中声明一个静态变量并在 console.cpp 中定义它。调用变量的行是:

     ok = CheckIoEditMinMax(0,Console::_tabsize, curpos, 0, insert,
20-Console::_tabsize,20, offset) && ok;

我知道能够通过它,但编译器不喜欢我这样做的方式。例如我这样声明:

/*Edited*/
namespace cio{
class Console{
public:
static unsigned int _tabsize; //Under public so it can be reached by the main.
//inside the console class in cio namespace
};
}

然后在cpp文件中这样定义:

/*Edited - Also No it is not Const */
namespace cio{
unsigned int Console::_tabsize = 4;
}

但是编译器仍然不喜欢这样说:

console.cpp:8:32: error: âunsigned int cio::Console::_tabsizeâ is not a 
static member of âclass cio::Consoleâ

我不知道为什么要这样做,甚至不知道从哪里弄清楚。另外,编译器会这么说你不觉得有点奇怪吗?

最佳答案

只有成员变量的声明需要包含static说明符。

struct Foo
{
static int value_;
};

// static specifier cannot be used here.
int Foo::value_ = 1;

在这种情况下,如果 _tabsize 没有改变,您可以将其声明为 const 并在类定义中为其赋值。如果您不这样做,则无需提供定义。

struct Foo
{
static const int value_ = 1;
};

关于C++ 静态声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19234342/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com