Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите, уже сломал голову! Type name expected

72K
11 июля 2011 года
stjoker
3 / / 11.07.2011
Есть два класса: список и элемент списка. При компиляции вылетают следующие ошибки:

[BCC32 Error] Chain.h(10): E2303 Type name expected
[BCC32 Error] Chain.h(10): E2139 Declaration missing ;
[BCC32 Error] Chain.h(15): E2238 Multiple declaration for 'Chain::Point'
[BCC32 Error] Chain.h(10): E2344 Earlier declaration of 'Chain::Point'
[BCC32 Error] Chain.h(15): E2139 Declaration missing ;
[BCC32 Error] Chain.h(19): E2293 ) expected

Попытка использования list из STL дала только:

[BCC32 Error] Unit1.cpp(19): E2401 Invalid template argument list

Что делать?

Список:
Код:
#ifndef CHAINH
#define CHAINH 1
#include "Shape.h"
class Chain {
private:
    static Chain *last;
    Chain *next;
    Chain *previous;
public:
    Point *pPoint;
    static Chain *begin;
    static int Count();
    static Point* GetItem(int _n);
    static int DeleteLastItem();
    Chain(Point *_pPoint);
};
#endif

И элемент списка, который наследуют ещё три класса:
Код:
#ifndef SHAPESH
#define SHAPESH 1
//---------------------------------------------------------------------------
class Point {
public:
    Point(double _x=0, double _y=0): x(_x), y(_y) {};
    virtual void Show(){}
    virtual void Move(double _x, double _y) {x+=_x; y+=_y;}
    virtual void Rotate(double _angle) {};
    virtual void Resize(double _n) {};
protected:
    double x, y;
};

class Circle : public Point {
public:
    Circle(double _x, double _y, double _r): Point(_x, _y), r(_r) {};
    void Show();
    void Resize(double _n) {r*=_n;}
protected:
    double r;
};

class Rectangle : public Point {
public:
    Rectangle(double _x, double _y, double _a, double _b, double _angle): Point(_x, _y), a(_a), b(_b), angle(_angle) {};
    void Show();
    void Resize(double _n) {a*=_n; b*=_n;}
    void Rotate(double _angle) { angle=_angle; }
protected:
    double a, b, angle;
};

class Square : public Rectangle {
public:
    Square(double _x, double _y, double _a, double _angle) : Rectangle(_x, _y, _a, _a, _angle) {}
    void Show();
    void Resize(double _n) {a*=_n; b*=_n;}
};

#endif
240
11 июля 2011 года
aks
2.5K / / 14.07.2006
Ну очевидно - вы используете в Chain.h тип Point, который не описан. Заинклюдте свой shape.h туда.
И еще - на кой черт у вас там все методы статические в chain? Типа может быть всего один экземпляр цепочки на программу? Но как то глупо реализовывать это так. И тем более у вас не запрещено свободно создавать экземпляры Chain.
72K
11 июля 2011 года
stjoker
3 / / 11.07.2011
Класс Point описан в Shape.h, который уже подключен! Но даже если свалить всё в один файл, выводятся те же ошибки(.
И да, может быть только один экземпляр цепочки. Но какой смысл говорить за это, если прогу даже скомпилировать невозможно?
14
12 июля 2011 года
Phodopus
3.3K / / 19.06.2008
так все же shape.h или shapes.h ??
72K
12 июля 2011 года
stjoker
3 / / 11.07.2011
Проблема решена! Всё дело было в имени класса Point. Как я понял, пересекался с каким то элементом или функцией в билдере...
246
12 июля 2011 года
GIZMO
1.8K / / 30.07.2004
Если хочешь обзывать классы как "какой-то элемент или функцию в билдере" используй - namespace
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог