Страшный зверь сиплюсплюс
Модератор: Jolly Roger
- Aerton
- Сообщения: 503
- Зарегистрирован: 11 авг 2007, 02:58
- Откуда: Новосибирск
- Контактная информация:
Re: Страшный зверь сиплюсплюс
Убедись, что скачанная версия pdcurses предназначена для сборки именно с mingw, а не msvc. Часто можно собрать и с неродными библиотеками, но иногда для этого нужны дополнительные шаги.
Попробуй собрать готовый hello world на С прямо из примера. Если будет собираться и работать, попробуй его же собрать как С++ - возможно окажется, что не хватает extern "C" или что-нибдуь подобное.
Просто ты сразу борешся на несколько фронтов: осваиваешь самый запутанный язык программирования, пытаешся сделать относительно сложную игру, осваиваешь инструментарий, работающий в неродной среде. Первый и последний можно попытаться упростить, начав делать ключевой функционал отдельными небольшими программками, в которых существенно проще найти проблемы или проверить идеи. Наример, погонять @, добившись работоспособности базового функционала curses. Систему ведения логов, связанный список с набором тестов (если не хочешь использовать std::list), и тп. Удачные прототипы можно будет внедрять в проект с минимальными переделками.
Мне кажется, ты пока просто плохо чувствуешь язык, и спотыкаешся порой на простых вещах, привыкнув думать на немного более глобальном уровне, работая с паскалем. Надо некоторое количество практики, чтобы эти вещи делались больше на автомате, чем сознательным усилием, и можно будет снова смотреть на горизонт. C++ язык очень сложный как сам по себе (сравним хотя бы по толщине типичной книги), так ещё более усуглубляется из-за множества традиций, наставляющих как делать хорошо, а что лучше знать, но не использовать.
Так что первое время по-любому будет тяжко
Попробуй собрать готовый hello world на С прямо из примера. Если будет собираться и работать, попробуй его же собрать как С++ - возможно окажется, что не хватает extern "C" или что-нибдуь подобное.
Просто ты сразу борешся на несколько фронтов: осваиваешь самый запутанный язык программирования, пытаешся сделать относительно сложную игру, осваиваешь инструментарий, работающий в неродной среде. Первый и последний можно попытаться упростить, начав делать ключевой функционал отдельными небольшими программками, в которых существенно проще найти проблемы или проверить идеи. Наример, погонять @, добившись работоспособности базового функционала curses. Систему ведения логов, связанный список с набором тестов (если не хочешь использовать std::list), и тп. Удачные прототипы можно будет внедрять в проект с минимальными переделками.
Мне кажется, ты пока просто плохо чувствуешь язык, и спотыкаешся порой на простых вещах, привыкнув думать на немного более глобальном уровне, работая с паскалем. Надо некоторое количество практики, чтобы эти вещи делались больше на автомате, чем сознательным усилием, и можно будет снова смотреть на горизонт. C++ язык очень сложный как сам по себе (сравним хотя бы по толщине типичной книги), так ещё более усуглубляется из-за множества традиций, наставляющих как делать хорошо, а что лучше знать, но не использовать.
Так что первое время по-любому будет тяжко
- Харука-тян
- Мастер
- Сообщения: 544
- Зарегистрирован: 29 ноя 2006, 00:23
- Контактная информация:
Re: Страшный зверь сиплюсплюс
В МСВС2008 работает(
Re: Страшный зверь сиплюсплюс
Тоже проголосовал за яву, конечно, ожидая увидеть в результатах за этот пункт единственный голос (мой) - и с удивлением обнаружил, что это вообще самый популярный пункт на данный момент)) (хотя подозреваю, что это нечто вроде "пчолы" в этой голосовалке).
На самом деле многие технические детали (но не все, конечно ) ява позволяет оставить за скобками, что делает ее весьма удобной по сравнению с Си)
На самом деле многие технические детали (но не все, конечно ) ява позволяет оставить за скобками, что делает ее весьма удобной по сравнению с Си)
- Jolly Roger
- Сообщения: 2973
- Зарегистрирован: 27 ноя 2009, 09:10
- Откуда: Minsk, Belarus
Re: Страшный зверь сиплюсплюс
Почему нет варианта: рефакторинг старого?
Писать диздок спустя несколько лет разработки и множества изменений концепции - исконная русская девелоперская традиция.
- Харука-тян
- Мастер
- Сообщения: 544
- Зарегистрирован: 29 ноя 2006, 00:23
- Контактная информация:
Re: Страшный зверь сиплюсплюс
Рефакторинг старого подразумевается в первом)
У меня снова грабли: кажется, я не совсем разобралась с шаблонами. Объясните, пожалуйста, почему опять не компилируется...
У меня снова грабли: кажется, я не совсем разобралась с шаблонами. Объясните, пожалуйста, почему опять не компилируется...
- Aerton
- Сообщения: 503
- Зарегистрирован: 11 авг 2007, 02:58
- Откуда: Новосибирск
- Контактная информация:
Re: Страшный зверь сиплюсплюс
Шаблоны - это одна большая грабля
Не получится так, как ты пытаешся сделать. Наследуемый класс тоже должен быть шаблоном. Есть такая конструкция Она создаст тип TByteArray который по сути является TArray<uint8>
По мелочам (у меня из-за этого ошибки):
Cимвол \ в директивах #include - нестандартная конструкция, надо использовать /
Имя random уже используется в стандарте POSIX для функции, тебе стоит переименовать объект, чтобы не возникало накладок.
Sleep - это win32 API? Стандартная функция называется sleep. Лучше использовать SDL_Delay, которая вызовет что надо для данной системы.
Не получится так, как ты пытаешся сделать. Наследуемый класс тоже должен быть шаблоном. Есть такая конструкция
Код: Выделить всё
typedef TArray<uint8> TByteArray;
По мелочам (у меня из-за этого ошибки):
Cимвол \ в директивах #include - нестандартная конструкция, надо использовать /
Имя random уже используется в стандарте POSIX для функции, тебе стоит переименовать объект, чтобы не возникало накладок.
Sleep - это win32 API? Стандартная функция называется sleep. Лучше использовать SDL_Delay, которая вызовет что надо для данной системы.
- Харука-тян
- Мастер
- Сообщения: 544
- Зарегистрирован: 29 ноя 2006, 00:23
- Контактная информация:
Re: Страшный зверь сиплюсплюс
Код: Выделить всё
typedef TArray<uint8> TByteArray;
TByteArray* Keys;
Keys = new TByteArray(16);
Код: Выделить всё
undefined reference to `TArray<unsigned char>::TArray(unsigned long, unsigned long)
- Aerton
- Сообщения: 503
- Зарегистрирован: 11 авг 2007, 02:58
- Откуда: Новосибирск
- Контактная информация:
Re: Страшный зверь сиплюсплюс
А ты этот класс точно убрала?
- Харука-тян
- Мастер
- Сообщения: 544
- Зарегистрирован: 29 ноя 2006, 00:23
- Контактная информация:
Re: Страшный зверь сиплюсплюс
На всякий случай перепроверила и убедилась, что убрала. Обновила транк. Копаюсь в бустах в поисках чего-нибудь, вызвращающего имя класса или метода, из которого вызвано.
- Aerton
- Сообщения: 503
- Зарегистрирован: 11 авг 2007, 02:58
- Откуда: Новосибирск
- Контактная информация:
Re: Страшный зверь сиплюсплюс
А! Как я сразу не увидел, - всё, что относится к шаблонам должно быть в .h
По правилам С++, их можно было бы написать и в .cpp, про помощи export, но ни один компилятор так делать не умеет.
По правилам С++, их можно было бы написать и в .cpp, про помощи export, но ни один компилятор так делать не умеет.
- Харука-тян
- Мастер
- Сообщения: 544
- Зарегистрирован: 29 ноя 2006, 00:23
- Контактная информация:
Re: Страшный зверь сиплюсплюс
Проект портирования моего ланцерана на С++ окончательно утверждён - текстовый терминал для него уже реализован, осталось только сделать всё остальное. Увы, сегодня сил не осталось даже на "бегающую собачку". Aerton, спасибо огромное, даже не представляю, что б я без тебя делала! =D>
- Харука-тян
- Мастер
- Сообщения: 544
- Зарегистрирован: 29 ноя 2006, 00:23
- Контактная информация:
Re: Страшный зверь сиплюсплюс
Как реализуются property и как объявить тип-процедуру?
- Aerton
- Сообщения: 503
- Зарегистрирован: 11 авг 2007, 02:58
- Откуда: Новосибирск
- Контактная информация:
Re: Страшный зверь сиплюсплюс
You are welcome! Ты задаёшь конкретные вопросы - на них отвечать не сложно.Харука-тян писал(а):Aerton, спасибо
Это когда снаружи выглядит как обычная переменная внутри объекта, но при обращении к ней вызывается специальный метод? Такого в С++ нету.Харука-тян писал(а):Как реализуются property
Не понял, про что речь, - может оно называется по-другому? Есть указатель на функцию. А при помощи typedef можно сделать такой тип.Харука-тян писал(а):и как объявить тип-процедуру?
- Харука-тян
- Мастер
- Сообщения: 544
- Зарегистрирован: 29 ноя 2006, 00:23
- Контактная информация:
Re: Страшный зверь сиплюсплюс
Конкретные вопросы - это когда уже чем "Как по этому лабиринту с РогБасина заставить "собачку" бегать?"?) Нууу... у меня таких бывает много. С типом-процедурой разобралась, без проперти обойдусь.
Очередной вопрост из серии "ЧЯНТД":
у меня в паскале protected-поля нормально читались из классов-потомков. А тут не хочет. При попытке зафрендить класс-предок получаю over 9000 ошибок.
Очередной вопрост из серии "ЧЯНТД":
у меня в паскале protected-поля нормально читались из классов-потомков. А тут не хочет. При попытке зафрендить класс-предок получаю over 9000 ошибок.
Re: Страшный зверь сиплюсплюс
А ты при наследовании пишешь так:Харука-тян писал(а): Очередной вопрост из серии "ЧЯНТД":
у меня в паскале protected-поля нормально читались из классов-потомков. А тут не хочет. При попытке зафрендить класс-предок получаю over 9000 ошибок.
Код: Выделить всё
class Child:public Base{
};
По умолчанию в С++ наследование private
Вместо пропертей в С++ обычные сеттеры и геттеры
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 41 гость