C++ 在C+中初始化类变量浮点数组+;
我正在尝试初始化一个类变量数组。据我所知,普通类变量初始化的工作原理如下:C++ 在C+中初始化类变量浮点数组+;,c++,arrays,class,C++,Arrays,Class,我正在尝试初始化一个类变量数组。据我所知,普通类变量初始化的工作原理如下: class test { public: static const float f; }; 但是,作为一个数组,它突然不起作用: class test { public: static const float f[2]; }; //const float test::f = { 1 ,2}; 整个代码应该可以运行,但是我注释掉了第6行。在第4行,它仍然抛出 错误LNK2001未解析外部符号“公共:静态
class test
{
public:
static const float f;
};
但是,作为一个数组,它突然不起作用:
class test
{
public:
static const float f[2];
};
//const float test::f = { 1 ,2};
整个代码应该可以运行,但是我注释掉了第6行。在第4行,它仍然抛出
错误LNK2001未解析外部符号“公共:静态浮点常量”*
常量测试::f“
我尝试了指针和动态分配,两者都不起作用。如何修复此错误,第6行是否有问题?正如@NathanOliver所说,您可以在类外将大小添加到初始化中:
class test
{
public:
static const float f[2];
};
...
const float test::f[2] = {1, 2};
或者,您也可以使用constexpr
并在类本身中声明数组:
class test
{
public:
static constexpr float f[2] = {1, 2};
};
正如@NathanOliver所说,您可以将大小添加到类之外的初始化中:
class test
{
public:
static const float f[2];
};
...
const float test::f[2] = {1, 2};
或者,您也可以使用constexpr
并在类本身中声明数组:
class test
{
public:
static constexpr float f[2] = {1, 2};
};
解释
test::f
表示f
未绑定到test
类实例。换句话说,只有一个单独的f
,就像test
是namespace
,而不是class
。只有一个且正好有一个f
注
另外,您忘了添加f
数组的大小,这必须在编译时给出。
您还可以始终使用说明符自动为您提供正确类型的成员
基本示例
解释
test::f
表示f
未绑定到test
类实例。换句话说,只有一个单独的f
,就像test
是namespace
,而不是class
。只有一个且正好有一个f
注
另外,您忘了添加f
数组的大小,这必须在编译时给出。
您还可以始终使用说明符自动为您提供正确类型的成员
基本示例
看起来你忘了尺码。Try
const float test::f[2]={1,2}代码>首先,变量F是常量,这意味着您不能执行F[0]=value或F[1]=value,它是只读变量,因此您必须首先初始化它,其次,您不能访问类obj变量,如常量float test::F={1,2},但只能测试:{1,2};看这里,你好像忘了尺寸。Tryconst float test::f[2]={1,2}代码>首先,变量F是常量,这意味着您不能执行F[0]=value或F[1]=value,它是只读变量,因此您必须首先初始化它,其次,您不能访问类obj变量,如常量float test::F={1,2},但只能测试:{1,2};检查这里,