2016-10-28 2 views
0

Я создаю небольшую библиотеку для нескольких геометрических фигур. Сделав это, я записываю прототипы в файл shapes.h и методы в файл shapes.cpp. Это заголовок:неизвестный тип name 'class'

#ifndef __shapeslib 
#define __shapeslib 

class Shape{ 
protected: 
    struct dimensions{ 
    double heigth; 
    double width; 
    }; 
    double radius;      // for circle class to be inherited 

public: 
    Shape(double heigth, double width); // Constructor 
    Shape(const Shape & shape);   // copy constructor for class 
    ~Shape();        // Destructor 

    virtual double area(double heigth, double width); 
    virtual double perimeter(double heigth, double width); 
    void height(); 
    void width(); 
    double rotate(double heigth, double width); 
}; 

Но при сохранении файла в программном обеспечении Atom, я получаю эти две ошибки на линии class Shape{

unknown type name 'class'

expected ';' after top level declarator

Я прочитал here что мог потому что я компилирую на C, а не на C++. Я искренне не знаю, как этого избежать (еще новичок).

Я также пытался изменить имя файла с .h до .hpp и кажется работающим. К сожалению, у меня должен быть заголовочный файл .h.

Любая обратная связь действительно оценена. Спасибо всем.

+2

Не существует 'class' в C. –

+0

Да, согласитесь. Но этот код предназначен для C++ (или должен быть). –

+0

Если вы компилируете с gcc пытаетесь скомпилировать с g ++. – OutOfBound

ответ

0

На самом деле, кажется, что Atom автоматически определяет файл заголовка .h как файл на C-языке. Для устранения этого объясняются несколько способов: here. Я попытался с ручным переключением с C на C++, используя ctrl + shift + L, и теперь у меня нет никаких ошибок. Я все еще может иметь красную точку рядом со словом class и такая ошибка показала:

expected ';' after top level declarator 

но код работает нормально, хотя.

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