在main
中,编译器给我的错误是没有正确的构造将Forma*
更改为Forma
。错误发生在这些行上。
Forma forma = new Forma(nombre "Cuadrado", color "azul");
Rectangulo rectangulo = new Rectangulo(nombre "Rectangulo", color "Negro", ladoMayor 5, ladoMenor 3);
错误的描述
对不起,我的写作,英语不是我的第一语言。我是编码和C++方面的新手。
#include <iostream>
using namespace std;
class Forma {
protected:
string nombre;
string color;
public:
Forma(string nombre, string color) {
this->nombre = nombre;
this->color = color;
}
string getNombre() {
return nombre;
}
string getColor() {
return color;
}
void setColor(string color) {
cout << "El nuevo color sera: " + color;
this->color = color;
}
virtual string imprimir() {
cout << "Nombre: " + nombre + "nColor: " + color;
return "Nombre: " + nombre + "Color: " + color;
}
void obtenerColor() {
cout << "El color actual es: " + color;
}
};
这是迄今为止第一类无错误
class Rectangulo : public Forma {
private:
double ladoMayor;
double ladoMenor;
double area;
double perimetro;
public:
Rectangulo (string nombreForma, string color, double ladoMayor, double ladoMenor): Forma(nombreForma, color){
this->ladoMayor = ladoMayor;
this->ladoMenor = ladoMenor;
}
double getLadoMayor() { return ladoMayor; }
double getLadoMenor() { return ladoMenor; }
double Area() {
cout << "El area es: " << ladoMayor * ladoMenor;
return area;
}
double Perimetro() {
cout << "El perimetro es: " << ((2 * ladoMayor) + (2 * ladoMenor));
return perimetro;
}
string imprimir() {
cout << "Nombre: " + nombre +
"ncolor: " + color +
"n Lado Mayor: " << ladoMayor <<
"n Lado Menor: " << ladoMenor;
return 0;
}
};
在函数imprimir
中,我有一个问题,如果我想返回所有值,我该怎么做?
class Programa_prueba {
int main(int argc, char** argv) {
Forma forma1 = new Forma(nombre "Cuadrado", color "azul");
Rectangulo rectangulo = new Rectangulo(nombre "Rectangulo", color "Negro", ladoMayor 5, ladoMenor 3);
forma.imprimir();
forma.obtenerColor();
forma.setColor("Amarillo");
cout << "n";
Rectangulo rectangulo1;
rectangulo1.imprimir();
rectangulo.Area();
rectangulo.Perimetro();
}
};
Forma forma
是静态内存分配,而分配new
是动态内存分配你必须:
Forma forma(nombre "Cuadrado", color "azul"); // static memory allocation
或:
Forma *forma = new Forma(nombre "Cuadrado", color "azul"); // dynamic memory allocation