C ++继承的函数未找到

时间:2014-04-17 18:56:38

标签: c++ function inheritance

我是C ++的新手,我很难理解如何使用继承获取我的函数。 我有一个链接到另一个继承的类,一切都工作,除了:

我无法达到我的超类功能。

这是我的班级标题:Point.h(我不包括.cpp):

#ifndef Point_H
#define Point_H
#include <iostream>
class Point{
  public:
         Point(); 
         void set_values (int , int);
         void set_values (int , int , int );
         void affichervaleurs();
         int getX() const { return x; }
         int getY() const { return y; }
  private:
         int x ;
         int y ;
         int z ;
  };
#endif

现在我的另一个类试图从Point.h访问函数getX: 标题:Carre.h

#ifndef Carre_H
#define Carre_H
#include "Point.h"

class Carre : public Point{      
  public:
         Carre();
         //Carre(int a , int b);
         //Carre(int a, int b):Point(a,b) {};
         //Carre(int a, int b, int c):Point(a, b, c) {};
         //const Point &pp;
         int Aire (){
         };
         void affichercar(){
                       };

  };
#endif

Carre.cpp

#include <iostream>
using namespace std;
#include "Carre.h"
#include "Point.h"

Carre::Carre():Point(){
  };
         //Carre::Carre(int a, int b);
         //const &pp;
         int Aire (){
              return (getX() * getY()); 
         };
         void affichercar(){
         //cout << "Coordonnees X:" << x  << endl;
                       };

它说我的GetX()在我的Carre.cpp中未声明。 就像我说的我是C ++的新手 有人知道我缺少什么来使代码工作。 ?

4 个答案:

答案 0 :(得分:3)

您的定义缺少类范围,这使其成为自由函数而不是成员。

应该是

int Carre::Aire (){
    return getX() * getY(); 
};

答案 1 :(得分:2)

在Carre的.cpp文件中,Aire和affichercar的功能是全局的。大概你打算:

int Carre::Aire(){
          return (getX() * getY()); 
     };

例如。

答案 2 :(得分:2)

在类体外声明函数需要一个类说明符:

int Carre::Aire () {
    return (getX() * getY()); 
};

void Carre::affichercar() {
    //...
}

否则

int Aire () {
    return (getX() * getY()); 
};

只是全局命名空间中的另一个函数,可以同时存在于Carre::Aire()

答案 3 :(得分:1)

这是因为您没有将Aire函数实现为Carre类的一部分。

尝试更改

int Aire (){

int Carre::Aire (){

此外,您已在头文件中实现了Aire方法。您应该在头文件或.cpp文件中实现内联函数,但不能同时实现两者。这也适用于您的affichercar方法。