的类成员,我有以下情况:C++相同类型
class Foo
{
public:
static const Foo memberOfFoo;
........
}
所以事情是我不能在同一行初始化它,我宣布它,我无法通过初始化在构造函数中初始化List,有谁知道该怎么办?
的类成员,我有以下情况:C++相同类型
class Foo
{
public:
static const Foo memberOfFoo;
........
}
所以事情是我不能在同一行初始化它,我宣布它,我无法通过初始化在构造函数中初始化List,有谁知道该怎么办?
把那么这个外的类定义的:
const Foo Foo::memberOfFoo = whateverValue;
这是Foo::memberOfFoo
的定义,它可以提供一个初始化函数和必须进入.cpp
文件(就像对象的任何其他定义一样,它只能在整个程序中出现一次,否则你会得到链接器错误)。
有时候你会发现代码没有定义,它的静态数据成员:
struct A {
// sometimes, code won't have an "const int A::x;" anywhere!
static const int x = 42;
};
省略的定义一样,是有效的只有A::x
从未地址取出并不会传到参考参数。一种更正式的说法是什么时候它可以省略定义是:“当A :: x的所有用法立即读取存储的A :: x值”。许多静态整数常量就是这种情况。
除常量整型以外的类静态需要/可以在定义点初始化。你需要在某个地方申报的(不那么)memberOfFoo,加入
const Foo Foo::memberOfFoo = /*construct here*/;
这是如何实现的初始化...
class Foo
{
public:
static const Foo memberOfFoo;
Foo(int, double)
{
...
};
};
const Foo Foo::memberOfFoo(42, 3.141592654);
...