Hier sind alle .cpp und .h Dateien im Ergebnis meiner Fehler verwendet. Sie sind Fehler, die ich gesehen und behoben habe, aber ich verstehe nicht, warum ich diese Fehler erhalte, es würde nicht die richtige Syntax für den Code ergeben.Einfache Kompilierung Fehler, aber macht keinen Sinn
shape.h
#ifndef SHAPE_H
#define SHAPE_H
#include <iostream>
#include <math.h>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
#include <iomanip>
#include <stdlib.h>
using std::cout; using std::cerr; using std::endl;
using std::string;
class Shape{
public:
Shape(const string&) { } //default constructor
virtual void print() const;
virtual double get_area() const;
virtual ~Shape();
private:
string color;
};
#endif
shape.cpp
#include "shape.h"
using std::cout; using std::cerr; using std::endl;
using std::string;
void Shape::print() const{
cout << color << endl; }
Shape::Shape(const string& color1):color(color1)
{/*color = color1;*/ }
Shape::~Shape()
{ }
circle.h
#ifndef CIRCLE_H
#define CIRCLE_H
#include <iostream>
#include <math.h>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
#include <iomanip>
#include <stdlib.h>
#include <vector>
#include "shape.h"
using namespace std;
using std::cout; using std::cerr; using std::endl;
using std::string; using std::vector;
class Circle : public Shape{
public:
Circle(const string& , int);
virtual void print() const;
virtual double get_area() const;
private:
int radius;
};
#endif
circle.cpp
#include "circle.h"
using std::cout; using std::cerr; using std::endl;
using std::string;
Circle::Circle(const string& color1,int newRadius):Shape(color1),radius(newRadius) {}
double Circle::get_area() const{
double area;
area = M_PI * (pow(radius,2));
return area;
}
void Circle::print() const{
cout << "Circle: " <<
<< color << " circle, "
<< "radius " << radius << ", "
<< "area " << get_area() << endl;
}
Haupt
#include <iostream>
#include "shape.h"
#include "circle.h"
#include <vector>
using std::vector; using std::string;
using namespace std;
int main{
vector<Shape *> shape1(1);
shape1[0] = new Circle("Green",20);
/*
for(int i = 0; i < arr; i++)
i.print();
for(int i = 0; i < arr; i++)
delete [] arr;
*/
return 0;
Fehler:
assign9.cpp:9:17: error: expected primary-expression before ‘shape1’
vector<Shape *> shape1(1);
^
assign9.cpp:9:17: error: expected ‘}’ before ‘shape1’
assign9.cpp:9:17: error: expected ‘,’ or ‘;’ before ‘shape1’
assign9.cpp:10:1: error: ‘shape1’ does not name a type
shape1[0] = new Circle("Green",20);
^
assign9.cpp:19:2: error: expected unqualified-id before ‘return’
return 0;
^
assign9.cpp:20:1: error: expected declaration before ‘}’ token
}
^
Ich bin nicht verstehen, wie diese Fehler zu kommen, auch meine TA konnte es nicht herausgefunden. Ich freue mich über jede Rückmeldung. Danke
Sieht so aus, als ob einige Header fehlen. –
Haben Sie 'using std;' Richtlinie? Sie müssen, wenn Sie Zeichenfolge und Vektor ohne Std :: angegeben verwenden. – CodeFuller
Typo. Sie haben 'Klasse Cirlce' anstelle von' Klassenkreis'. "l" und "c" werden versehentlich getauscht. –