#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
Помогите, уже сломал голову! Type name expected
[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 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
#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
И еще - на кой черт у вас там все методы статические в chain? Типа может быть всего один экземпляр цепочки на программу? Но как то глупо реализовывать это так. И тем более у вас не запрещено свободно создавать экземпляры Chain.
И да, может быть только один экземпляр цепочки. Но какой смысл говорить за это, если прогу даже скомпилировать невозможно?
так все же shape.h или shapes.h ??
Проблема решена! Всё дело было в имени класса Point. Как я понял, пересекался с каким то элементом или функцией в билдере...
Если хочешь обзывать классы как "какой-то элемент или функцию в билдере" используй - namespace