2

我正在构建一个类,其中我有三个成员变量,我希望它们始终是相同的值,无论什么。

我有

class foo{

public:
    double var_1, var_2, var_3;
    double x=1, y=2, z=3;

[functions go here]

};

这给了我一个错误,因为我无法初始化这样的变量。但我希望 x、y 和 z 始终分别为 1、2 和 3。我尝试在类之外定义它们,但这不起作用,因为我希望它们成为类的成员变量。

我该怎么做呢?

4

3 回答 3

4

将这些值设为类的静态值,这样所有对象都将继承这些相同的值。

static const int x = 1;
static const int y = 2;
static const int z = 3;

从技术上讲,这并没有定义变量。如果静态数据成员是 const 整数或 const 枚举类型,则可以在静态数据成员的声明中指定常量初始值设定项。这个常量初始化器必须是一个整数常量表达式。请注意,常量初始值设定项不是定义。您仍然需要在封闭的命名空间中定义静态成员。

#include "foo.h"
#include <//libs....>
int foo::x;
int foo::y;
int foo::z;
//class functions down below
于 2012-11-17T22:46:00.570 回答
3

您还可以在构造函数中使用初始化列表来设置这些字段的初始值,就像任何其他成员一样:

class foo {
public:
    const double x;
    const double y;
    const double z;

    foo() : x(1), y(2), z(3) {
    }
};
于 2012-11-17T22:49:33.213 回答
1

您不必使它们成为静态的。你可以这样声明它们:

class foo{

public:
    double var_1, var_2, var_3;
    const double x=1.0;
    const double y=2.0;
    const double z=3.0;

[functions go here]

};

虽然如果它们是整数值,那么将它们声明为ints 会更好。

于 2012-11-17T22:50:10.077 回答