我在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()'
我做错了什么?这只是一个简单的例子。
谢谢
答案 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
执行相同操作。)