Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Порядок хедеров 
:(
    Опции темы
TGrey
Дата 28.11.2010, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 1.12.2007

Репутация: нет
Всего: 1



Это само собой, были бы они ровные уже давно бы работало. Но почему та же структура файлов работает в студии, но не работает в Билдере. Отличие только в именах классов.
Код

//main.cpp
#include "cA.h"
#include "cB.h"
#include "cC.h"

int main()
{
    A *a;
    a = new A();
    a->b = new B(2);
    a->b->a = 3;
    return 0;
}
//------------------------------------------------------
//cA.h
#ifndef _CA_H
        #define _CA_H
class B;
class C;
class A
{
public:
    void D();
    B *b;
    C *c;
};
#endif
//-------------------------------------------------------------
//cB.h
#ifndef _CB_H
        #define _CB_H
class B
{
public:
    B(int a){};
    int a;
};
#endif
//---------------------------------------------------------------
//cC.h
#ifndef _CC_H
        #define _CC_H
class C : public B
{
public:
    C() : B(1){};
    int b;
};
#endif
//-----------------------------------------------------------------
//func.cpp
#include "cA.h"
#include "cB.h"
#include "cC.h"

void A::D()
    {
        b = new B(2);   //
        b->a = 3;
    }


Все тоже самое ведь?
PM MAIL   Вверх
mes
Дата 28.11.2010, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(TGrey @  28.11.2010,  20:54 Найти цитируемый пост)
Но почему та же структура файлов работает в студии, но не работает в Билдере. 

значит не все повторили..
Цитата(TGrey @  28.11.2010,  20:54 Найти цитируемый пост)
Все тоже самое ведь? 

нет.. в прошлых примерах был вызов (в хидере) метода одного класса другим..





--------------------
PM MAIL WWW   Вверх
TGrey
Дата 28.11.2010, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 1.12.2007

Репутация: нет
Всего: 1



Я после того изменил же, как и в Студии.
Код

//map.h
#ifndef _MAP_H
        #define _MAP_H
class Player;
class Enemy;
class CMap
{
public:
    CMap();

        int GetPlayerX();
        int GetPlayerY();

    void GetMap();
        //void DrawMap(TCanvas *Canvas);
    Player *pl;
    Enemy *en[4];
        /*Graphics::TBitmap *wall;
        Graphics::TBitmap *player;
        Graphics::TBitmap *empty;
        Graphics::TBitmap *enemy;
        Graphics::TBitmap *coin;*/
    char Map[25][25];
};
#endif

//player.h
#ifndef _MAP_H
        #define _MAP_H

enum Direction{ DLeft=0, DRight, DTop, DDown, DNone};

class Player
{
public:
    Player(int _x, int _y);
        void CanGo(char Map[25][25], Direction d);
    bool CanGo(char Map[25][25], int nx, int ny);
        virtual void DoMove( char Map[25][25] );
        bool Free(Direction d, char Map[25][25]);
        virtual bool NewOffset(char Map[25][25]);

//private:
        int points;
//protected:
        Direction dir;
        Direction gooddir;
        Direction nextdir;
    int x;
    int y;
        int offsetx;
        int offsety;
};

#endif


//enemy.h
#ifndef _ENEMY_H
        #define _ENEMY_H
//class CMap;
//class Player;
class Enemy //: public Player
{
        //CMap *pl;
public:
    //Enemy(int _x, int _y/*, CMap *p*/): Player(_x, _y);

        //virtual void DoMove( char Map[25][25] );
        //virtual bool NewOffset(char Map[25][25]);
};

#endif

//func.cpp
#include "Map.h"
#include "Player.h"
#include "Enemy.h"
#include <fstream.h>


    CMap::CMap()
        {
                //pl = new Player(1,1);
                //en[0] = new Enemy(1,1);
                //en[1] = new Enemy(1,2);
                //en[2] = new Enemy(1,2);
                //en[3] = new Enemy(1,2);

                /*wall = new Graphics::TBitmap();
                player = new Graphics::TBitmap();
                empty = new Graphics::TBitmap();
                enemy = new Graphics::TBitmap();
                coin = new Graphics::TBitmap();

                wall->LoadFromFile("wall.bmp");
                player->LoadFromFile("man.bmp");
                empty->LoadFromFile("empty.bmp");
                enemy->LoadFromFile("enemy.bmp");
                coin->LoadFromFile("coin.bmp"); */
        }

        int CMap::GetPlayerX()
        {
                return pl->x;
        }

        int CMap::GetPlayerY()
        {
                return pl->y;
        }
....


Ну и вот стразу уже тут ругается на конструктор
Цитата

//pl = new Player(1,1);

и на
Цитата

        int CMap::GetPlayerX()
        {
                return pl->x;
        }

типа Х не является полем потому что Плеер еще не определен.

Добавлено через 9 минут
Все загадка разгадана((( Виной всему кривые руки... Я копи\пастил защиту от повторного включения хедеров и в файле Плеер.ш осталась проверка на инклуд Карты. Потому оно Плеер.ш просто не включало никогда.
Теперь все работает. smile 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0867 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.