C++ “生成错误的来源”;在'之前应为主表达式;浮动'&引用;在继承的简单实现中
我似乎无法找到为什么会出现构建错误 “float”之前应为主表达式 在这个实现中C++ “生成错误的来源”;在'之前应为主表达式;浮动'&引用;在继承的简单实现中,c++,inheritance,syntax,C++,Inheritance,Syntax,我似乎无法找到为什么会出现构建错误 “float”之前应为主表达式 在这个实现中 using namespace std; class Point{ public: Point(float X = 0.0, float Y = 0.0); void set(float X, float Y); void setX(float X); void setY(float Y); void get(float * P_x, float * P_y); float getX(); float ge
using namespace std;
class Point{
public:
Point(float X = 0.0, float Y = 0.0);
void set(float X, float Y);
void setX(float X);
void setY(float Y);
void get(float * P_x, float * P_y);
float getX();
float getY();
float * pX();
float * pY();
SDL_Point returnSDL();
private:
float x;
float y;
};
class Vector : public Point{
public:
Vector(float X = 0.0, float Y = 0.0);
};
///The errors occur in this constructor...
Vector::Vector(float X, float Y) : Point(float X, float Y){
}
我仍在学习课程的细节,如果有任何帮助,我将不胜感激。我知道这与继承有关,因为当
Vector
不继承Point
时,程序会正常构建。据我所知,这是继承的正确语法和实现。到目前为止,我找到的Web帮助无法回答。您将声明函数和使用函数混淆了。声明函数时,需要告诉编译器参数的类型
Vector::Vector(float X, float Y)
现在在成员初始化部分中
: Point(float X, float Y)
在这里,您将向函数调用添加类型,这不是您想要做的。调用函数时,只需将值/变量传递给它
: Point( X, Y)
^ ^ no type here as we just pass X and Y to the Point constructor.
这段代码中有两种类似的结构:
向量::向量(浮点X,浮点Y)
和:点(浮点X,浮点Y)
:
- 第一个(
)是类Vector::Vector(float X,float Y)
的构造函数的声明李>Vector
- 另一个(
)是一个函数调用;类:点(浮点X,浮点Y)
点的构造函数的调用;注意冒号(
)引入了成员初始值设定项列表:
Point::Point()
构造函数的参数列表中需要表达式,而不是类型
// Look, ma! No errors!
Vector::Vector(float X, float Y) : Point(X, Y) {
}
有关更多信息,请查看有关的文档页面。:Point(float X,float Y)
->:Point(X,Y)
// Look, ma! No errors!
Vector::Vector(float X, float Y) : Point(X, Y) {
}