我在对成员'calCurve'[-fpermissive] 的附加资格'bezierCurve ::'时说错了[strong]。谁能向我解释为什么会这样?我一直在寻找答案,但是我无法解决问题。
#ifndef _BEZIERCURVE_H_
#define _BEZIERCURVE_H_
#include "bezier.h"
class bezierCurve : public bezier{
private:
int numPoints;
float **controlPoints;
float **curvePoints;
void bezierCurve::calCurve(); //and error here
public:
bezierCurve(int numPoints, float *points[3]);
void bezierCurve::setShowPoints(bool showControlPoints); // I got the error here
virtual void draw();
~bezierCurve();
};
#endif
答案 0 :(得分:0)
这是一个错误,因为它不是有效的C ++语法。房间里的大象是VisualC ++历史上没有将其视为错误。但是自从GCC开始就有版本4了。
只需删除多余的资格即可修复代码。
例如:
#ifndef __ANIMAL_H__
#define __ANIMAL_H__
class Animal
{
...
int Animal::getLegCount();
bool Animal::hasFur();
};
#endif
不正确,必须在没有Classname::
前缀的情况下定义成员:
#ifndef __ANIMAL_H__
#define __ANIMAL_H__
class Animal
{
...
int getLegCount();
bool hasFur();
};
#endif
答案 1 :(得分:0)
您混淆了声明和定义。当您声明成员函数时,它已经在类的上下文中,因此classname::
是多余的。在类之外定义函数的主体时,需要使用classname::
,以便编译器知道它属于哪个类。
class bezierCurve : public bezier{
void setShowPoints(bool showControlPoints);
};
void bezierCurve::setShowPoints(bool showControlPoints) {
}
答案 2 :(得分:-1)
this is what output i get. suppose it's not like this.
@kingsley,这是我从sscanf_s()删除_s后运行代码时显示的输出。