C ++ - Arduino - 没有用于调用的匹配函数

时间:2016-01-23 08:40:13

标签: c++ arduino

我在Arduino项目中有两个简单的类。:

这些类放在Point.h和Line.h文件中。

#include "Arduino.h"
#ifndef Point_h
#define Point_h

class Point{

    public:
        Point(int x);
        int getPunkt();
        void setPunkt(int x);

    private:
        int _x;
};

/////////////////////////////////
Point::Point(int x){
    _x = x;
}

int Point::getPunkt(){
    return _x;
}

void Point::setPunkt(int x){
    _x = x;
}
#endif

#include "Point.h"
#ifndef Line_h
#define Line_h

class Line{

public:
    Line(Point p1, Point p2);

private:
    Point _p1;
    Point _p2;
};

Line::Line(Point p1, Point p2){
    _p1 = p1;
    _p2 = p2;
}

#endif

Line的构造函数给了我:

此行有多个标记      - 候选人是:      - 没有匹配函数来调用'Point :: Point()'

我做错了什么?这只是一个简单的例子。

谢谢

1 个答案:

答案 0 :(得分:0)

从现在开始使用member initializer lists _p1_p2必须首先默认构建(如果省略成员初始化列表):

Line::Line(Point p1, Point p2) : _p1(), _p2() { ... }

稍后在构造函数体中执行赋值。 (Point没有生成默认构造函数,因为您已经提供了自己的构造函数。)

你必须这样做:

Line::Line(Point p1, Point p2) : _p1(p1), _p2(p2) {} // copy-initialize

(对Point::Point执行相同操作。)