2016-05-02 3 views
1

Вот все файлы .cpp и .h, используемые в результате моих ошибок. Это ошибки, которые я видел и исправлял раньше, но я не понимаю, почему я получаю эти ошибки, это не сделает правильный синтаксис для кода.Простая ошибка компиляции, но не имеет смысла

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; 
} 

основные

#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; 

ошибки:

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 
} 

^ 

Я не понимая, как эти ошибки идут о, даже мой TA не мог понять. Я ценю любую обратную связь. Thanks

+0

Похоже, что вам не хватает заголовка. –

+0

Добавили ли вы 'using std;' Директива? Вы должны, если используете строку и вектор без std :: указанный. – CodeFuller

+3

Typo. У вас есть 'class Cirlce' вместо' class Circle'. 'l' и' c' поменяются местами по ошибке. –

ответ

4

Cirlce вместо круга.

строка вместо std :: string.

На стороне записки, конструктор круга должен быть лучше Круг :: Круг (Const строка & цвет1, внутр newRadius): Форма (цвет1), радиус (newRadius) {}

(инициализировать все, что вы может в конструкторах, а не в скобках).

+1

Замечание по терминологии: где вы говорите «в конструкторах» лучшая формулировка будет «в списке инициализаторов членов». – user4581301

+0

Спасибо за внимание, я установил Cirlce вместо Circle, но произошла точно такая же ошибка. – Xenu

+0

Я попробовал. У вашего кода много ошибок, но эта же ошибка не возникает. Возможно, вы забыли сохранить файл. Если это все еще происходит, создайте минимальный пример (попробуйте создать один файл там, где он встречается, объединив все ваши файлы вместе, а затем сделайте файл как можно меньше, удалив все, что не является необходимым для воспроизведения ошибок). – user31264

Смежные вопросы