我正在学习用c ++创建类,并且我创建了一个简单的Point类。它以某种方式无法编译,我不知道出了什么问题。请帮忙。
Point.h
#ifndef POINT_H
#define POINT_H
class Point {
private:
float x, y;
public:
//default constructor
Point();
//constructor
Point(float x, float y);
float getX();
float getY();
void print();
};
#endif
Point.cpp
#include "Point.h"
Point::Point(){
x = 0.0;
y = 0.0;
};
Point::Point(float x, float y){
x = x;
y = y;
}
float Point::getX(){
return x;
}
float Point::getY(){
return y;
}
void Point::print(){
cout << "hello" ;
{
main.cpp:
#include <Point.h>
#include <iostream>
int main()
{
Point p(10.0f, 20.0f);
p.print();
return 0;
}
以下是构建消息:
||=== Build: Debug in Point (compiler: GNU GCC Compiler) ===|
main.cpp|7|error: no matching function for call to 'Point::Point(float, float)'|
main.cpp|8|error: 'class Point' has no member named 'print'|
||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
答案 0 :(得分:3)
在定义正文时,您忘记将Point::
放在print
前面。此外,构造函数中的x = x
不会做任何事情。您需要分配给this->x
,同样分配给y。
答案 1 :(得分:1)
如果可能,始终使用构造函数初始化列表
Point::Point()
: x(0.f)
, y(0.f)
{
}
Point::Point(float x, float y)
: x(x)
, y(y)
{
}
为getX()getY()
返回const