类/成员函数错误

时间:2014-02-21 05:25:06

标签: c++ class member-functions

我在这里有这段代码:

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

请帮忙吗?

2 个答案:

答案 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 ++中的有效操作。您只能将“初始化器”列表与“构造函数”一起使用。 编译器给出了非常明确的错误。