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

C++ - Arduino - no matching function for call to

本文关键字:函数 调用 用于 Arduino C++      更新时间:2023-10-16

我在Arduino项目中确实有2个简单的类:

这些类被放在 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::P oint()"

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

谢谢

从现在开始使用成员初始值设定项列表。 _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执行相同的操作。