在尝试编译代码的第一行时,我收到错误“xxx没有命名类型”。 知道“poligono”是“triangulo”的基类,我写了.cpp和.h 文件。
我想知道我可以解决此错误的方法
#include <string.h>
#include <iostream>
#include "poligono.h"
using namespace std;
triangulo :: triangulo(int x1i, int x2i, int x3i, int y1i, int y2i, int y3i, string clasei, int ancho, int alto, int puntos) :: poligono(int ancho, int alto, int puntos){
this-> x1 = x1i;
this-> x2 = x2i;
this-> x3 = x3i;
this-> y1 = y1i;
this-> y2 = y2i;
this-> y3 = y3i;
}
triangulo :: triangulo(int x1, int x2, int x3, int y1, int y2, int y3, string clasei, const otro&) :: poligono (otro.ancho, otro.alto, otro.puntos){
this-> x1 = otro.x1;
this-> x2 = otro.x2;
this-> x3 = otro.x3;
this-> y1 = otro.y1;
this-> y2 = otro.y2;
this-> y3 = otro.y3;
this->clase = clasei;
}
#ifndef TRIANGULO_H
#define TRIANGULO_H
#include "poligono.h"
#include <iostream>
#include <string>
using namespace std;
class triangulo : public poligono{
private:
string clase;
const int lados = 3;
int x1;
int y1;
int x2;
int y2;
int x3;
int y3;
public:
triangulo (int x1i, int x2i, int x3i, int y1i, int y2i, int y3i, string clase);
triangulo (const &otro);
setx1(int x1i);
setx2(int x2i);
setx3(int x3i);
sety1(int y1i);
sety2(int y2i);
sety3(int y3i);
getx1();
getx2();
getx3();
gety1();
gety2();
gety3();
getlados();
getclase();
};
#endif
答案 0 :(得分:5)
对于您提到的问题,您需要#include "triangulo.h"
,否则编译器不知道您所指的这个triangulo
类是什么。此外,#include <string.h>
应为#include <string>
。
顺便说一句,把using namespace std
放在最好的时候并不是很好,但把它放在头文件中真的很糟糕。此外,如果您发现自己定义了名为x1
,x2
,x3
,y1
,y2
和y3
的成员变量,那么你很有可能遇到设计问题。至少,听起来像Point
class
或struct
的主要候选人,与某种容器相结合。更有可能的是,如果您首先拥有poligono
基类,那么您通常会期望所有这些点功能都包含在其中。