IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

 
 Ответить  Открыть новую тему 
> Преждевременное обявление, C++
Игорь
сообщение 31.07.2012 9:55
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 56
Пол: Мужской

Репутация: -  2  +


Такой файл компилируется с ошибками типа error: 'Player' does not name a type (понятно это ж пространсто имён). Проблема, похоже, в заголовочных файлах: они где то взаимоисключаются, поэтому я убрал includ'ы и добавил объявления классов, но ошибка не исчезла. Почему, ведь я использую только указатели и ссылки, а им должно хватать и обявления?


#ifndef _TABLE_HPP_
#define _TABLE_HPP_

class Ball::CBall;
class Player::CPlayer;

namespace Table {

class CTable {

public:

CTable (unsigned int Width, unsigned int Height);

inline unsigned int getWidth () const;
inline unsigned int getHeight () const;

inline Player::CPlayer & getLeftPlayer ();
inline Player::CPlayer & getRightPlayer ();

inline Ball::CBall & getBall ();

private:

unsigned int d_Width;
unsigned int d_Height;

Player::CPlayer * d_Left_Player;
Player::Cplayer * d_Right_Player;

Ball::CBall * d_Ball;

};

}

#endif



Сообщение отредактировано: Игорь - 31.07.2012 9:56
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
IUnknown
сообщение 31.07.2012 11:25
Сообщение #2


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


Цитата
понятно это ж пространсто имён
Чего ж ты не пишешь этого, чтобы компилятору тоже было понятно?
#ifndef _TABLE_HPP_
#define _TABLE_HPP_

namespace Ball
{
class CBall;
}
namespace Player
{
class CPlayer;
}

namespace Table {
class CTable {
public:
CTable (unsigned int Width, unsigned int Height);
inline unsigned int getWidth () const;
inline unsigned int getHeight () const;
inline Player::CPlayer & getLeftPlayer ();
inline Player::CPlayer & getRightPlayer ();
inline Ball::CBall & getBall ();
private:
unsigned int d_Width;
unsigned int d_Height;
Player::CPlayer * d_Left_Player;
Player::CPlayer * d_Right_Player;
Ball::CBall * d_Ball;
};
}
#endif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Игорь
сообщение 31.07.2012 17:01
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 56
Пол: Мужской

Репутация: -  2  +


Я то думал он сам догадается... Впрочем, хотя проблемы нет здесь она вылезла в другом месте, видимо, прдётся разгребать фарш из файлов. Тем не менее спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 10.11.2024 2:30
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"