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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> list 
:(
    Опции темы
wpp
Дата 14.11.2005, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

class W {
    private:
        list<Pics *> pics;
    public:
        struct Pics {
            SDL_Surface *normal, *smooth;
            Uint8 prev, next;
        };
        Wheel( );
        
        ~Wheel();
};

вывод компилятора:
Код

/src/Wheel.h:10: error: `Pics' was not declared in this scope
/src/Wheel.h:10: error: parse error before `>' 


В чем дело, не поймуsmile
PM   Вверх
Neitron
Дата 14.11.2005, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: 2
Всего: 5



Код

struct Pics {
            SDL_Surface *normal, *smooth;
            Uint8 prev, next;
};
class W {
    private:
        list<Pics *> pics;
    public:
        W( );
        
        ~W();
};



--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
wpp
Дата 14.11.2005, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Neitron Хм, а почему? Похоже я чего-то фундаментального не понимаю...
PM   Вверх
Void
Дата 14.11.2005, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



Цитата(wpp @ 14.11.2005, 21:03)
Похоже я чего-то фундаментального не понимаю...

Я, видимо, тоже... Потому что вот это нормально компилируется.
Код
class W {
        std::list<class Pics *> pics;
public:
        struct Pics {
            int prev, next;
        };
        W() { }
        
        ~W() { }
};

Ушел дальше постигать стандарт


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
wpp
Дата 14.11.2005, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Void Гений!!! Но почему class?
PM   Вверх
Void
Дата 14.11.2005, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



Цитата(wpp @ 14.11.2005, 21:40)
Но почему class?

Ну хочешь, напиши struct smile Суть от этого не поменяется.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
nikitao
Дата 14.11.2005, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

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



wpp
В С++ нет принципиальной разницы между структурами и классами.Их разница лишь в том что по умалчанию в структуре переменные открыты ,а в классе закрыты.Так что компилится и так и так (сам проверил)



--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
wpp
Дата 14.11.2005, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



nikitao
Void
Народ! Раз уж Вы в регалиях smile, укажите на хорошие манулы по STL. Такие, чтобы понять, а не механически запомнить, какие кнопки жать smile

PM   Вверх
nikitao
Дата 14.11.2005, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

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



Void,не так делать нельзя ,ибо компеляция этого кода может быть "случайностью" и при дальнейшей разработке приложения перестать работать.К примеру:
Код

std::list<class Pics *> pics;

Замени на
Код

std::list<class Pics> pics;

У меня перестал после этого работать.В общем (ИМХО) лучше избегать таких конструкций без необходимости(а тут ее нет) smile


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
Void
Дата 14.11.2005, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



wpp
"The C++ Standard Library" Йозуттиса, однозачно. Английский вариант можно найти в инете, а русский перевод - купить.
Добавлено @ 20:21
nikitao
Если на то пошло, при дальнейшей разработке может перестать работать что угодно smile В случае перехода от списка указателей к списку структур изменения по коду будут куда более существенными, чем одно ключевое слово в объявлении.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
nikitao
Дата 14.11.2005, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

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



Лично по моим представления о синтаксисе С++ вообще нельзя использовать ничего ,что не обьявлено выше(или там extern иногда нужен),а тут все полностью этому правилу противоречит.
wpp,это в смысле че почитать?
Если да,то MSDN в руки или Страуструпа в зубы и постигай неведаное...


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
wpp
Дата 14.11.2005, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



nikitao А как надо?
PM   Вверх
nikitao
Дата 14.11.2005, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

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



Void,ты мне обьясни почему этот код не компилится???(в смысле который вместо указателя сруктуру создает) smile
Добавлено @ 20:25
wpp,мне нравится как Neitron сделал(я бы тоже так сделал)


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
Void
Дата 14.11.2005, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



Цитата(nikitao @ 14.11.2005, 22:22)
Лично по моим представления о синтаксисе С++ вообще нельзя использовать ничего ,что не обьявлено выше(или там extern иногда нужен),а тут все полностью этому правилу противоречит.

Код
class A {
public:
    int foo() { return i; } // оба-а... а где это у нас i объявлен?
private:
    int i;
};


Цитата(nikitao @ 14.11.2005, 22:24)
ты мне обьясни почему этот код не компилится???(в смысле который вместо указателя сруктуру создает)

Потому что Pics в точке инстанциирования std::list является неполным типом.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
wpp
Дата 14.11.2005, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вообще не въезжаю, почему class или struct надо. В справочнике Шилдта, в подобных случаях, без них вроде обходится smile

nikitao Спасибо, Страуструп есть у меня. Объясняет он ужасно (IMHO). В кучу ничего из прочитанного собрать не удалось smile
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.0621 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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