我在这里有这段代码:
class physics_vector
{
public:
double direction, magnitude;
int dir_mag(double dir, double mag) :direction(dir),
magnitude(dir) {return 0; };
};
int dir_mag(double dir, double mag)
{
cout << "Direction: " << dir << '\n';
cout << "Magnitude: " << mag << '\n';
return 0;
}
每当我尝试编译时,我都会收到错误,
13:39: error: only constructors take member initializers
请帮忙吗?
答案 0 :(得分:4)
此功能:
int dir_mag(double dir, double mag) :direction(dir), magnitude(dir)
{return 0; };
正在使用初始化列表(:direction(dir), magnitude(dir)
),并且只允许构造函数使用。如果您计划将其作为构造函数,那么您的类应该如下所示:
class physics_vector
{
public:
double direction, magnitude;
physics_vector(double dir, double mag) :direction(dir),
magnitude(dir) {};
};
这将编译。请注意,您不允许从构造函数返回值,也不允许返回类型。
答案 1 :(得分:1)
你不能在函数中使用初始化列表。它不是C ++中的有效操作。您只能将“初始化器”列表与“构造函数”一起使用。 编译器给出了非常明确的错误。