C ++-使用其他类的构造函数实例化对象

时间:2018-09-10 20:24:01

标签: c++ constructor default-constructor

我有称为Point和Vector的类。我希望能够从Point对象初始化Vector对象,该对象是通过调用其构造函数创建的。但是我收到以下错误:对象被初始化为非类类型“ Vector(Point(*)())”

// in Point.h

class Point{
    double x,y,z;
public:
    Point();
    Point(double, double, double);
};

// in Vector.h

class Vector{
public:
    Vector();
    Vector(double, double, double);
    Vector(const Point&);
    f();
};

// in  main.cpp
int main(){
    Vector v(Point(0,0,0)); // OK
    Vector w(Point()); // 'error'
    v.f(); // OK
    w.f(); // error
}

为什么不使用在Point()的默认构造函数中创建的Point对象初始化对象'w'?能够对对象'v'做类似的事情。

我尝试使用

 Vector w(new Point());

但是这也会产生编译错误,我认为我理解。

1 个答案:

答案 0 :(得分:2)

大多数令人烦恼的解析:

Vector w(Point())被解析为函数声明:

改为使用{}

Vector w{Point{}};
相关问题