贝塞尔曲线OPENGL对成员具有额外资格

时间:2018-12-11 20:59:48

标签: c++

我在对成员'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

3 个答案:

答案 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后运行代码时显示的输出。