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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> инициализация вектора структур, компилятору не нравятся {} 
:(
    Опции темы
powerfox
Дата 10.11.2005, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

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



Код

struct Snake{
        int xpos;
        int ypos;
        int x_direct; 
        int y_direct;
    };
std::vector<Snake>point_of_reverce(1);
//
point_of_reverce[i] = {xpos, ypos, 0, -1};


Код

error: expected primary-expression before '{' token
error: expected `;' before '{' token


Что ему не так?


--------------------
user posted image
PM WWW   Вверх
Void
Дата 10.11.2005, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


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

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



powerfox
Такой синтаксис можно использовать только при объявлении переменных:
Код
Snake s = { xpos, ypos, 0, -1 };

Здесь тебе поможет объявление конструктора:
Код
struct Snake{
        int xpos;
        int ypos;
        int x_direct; 
        int y_direct;
        Snake(int xpos_, int ypos, int x_d, int y_d) :
            xpos(xpos_), ypos(ypos_), x_direct(x_d), y_direct(y_d) { }
    };
...
point_of_reverse[i] = Snake(xpos, ypos, 0, -1);



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


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

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



Спасибо Void! Я пока не дошёл до конструкторов - просто воспользуюсь вашим примером.


--------------------
user posted image
PM WWW   Вверх
powerfox
Дата 11.11.2005, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

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



Почитал о конструкторах, правда, там делают немного иначе: определяют функцию.
Переделал код, теперь пишет про vector, возможно, хочет его инициализировать конструктором по умолчанию. Что не так уму?
Код

struct Snake{    
        int xpos;    
        int ypos;    
        int x_direct;    
        int y_direct;    
        Snake(int xpos_, int ypos_, int x_d, int y_d) :    
            xpos(xpos_), ypos(ypos_), x_direct(x_d), y_direct(y_d) { }    
    };
Snake first = Snake(180, 0, 1, 1);   //first part of the snake
Snake lost = Snake(180,0, 1, 0);     //the lost part of the snake    
...
std::vector<Snake>point_of_reverce(1);
...
point_of_reverce[i] = Snake(first.xpos, first.ypos, 0, -1);



Код

/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/../../../../include/c++/3.4.1/bits/stl_vector.h: In constructor `std::vector<_Tp, _Alloc>::vector(size_t) [with _Tp = Snake, _Alloc = std::allocator<Snake>]':
driver.cpp:13:   instantiated from here
/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/../../../../include/c++/3.4.1/bits/stl_vector.h:207: error: no matching function for call to `Snake::Snake()'
snake.h:10: note: candidates are: Snake::Snake(const Snake&)
snake.h:15: note:                 Snake::Snake(int, int, int, int)



--------------------
user posted image
PM WWW   Вверх
powerfox
Дата 11.11.2005, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

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



Кажется, что ошибка здесь:
Код

std::vector<Snake>point_of_reverce(1);


Происходит автоматическая инициализация конструктором. Как исправить? И что значит:
Код

snake.h:10: note: candidates are: Snake::Snake(const Snake&)    
snake.h:15: note:                 Snake::Snake(int, int, int, int)

Добавлено @ 15:38
Получилось! Поменял
Код

  Snake(int xpos_, int ypos_, int x_d, int y_d) :     
...


На
Код

Snake(int xpos_=0, int ypos_=0, int x_d=0, int y_d=0) :    
...



--------------------
user posted image
PM WWW   Вверх
powerfox
Дата 11.11.2005, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

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



smile smile smile

В программе нужны только значения вектора[curr_tok] и последующих переменных. Все значения до curr_tok(вектор[curr_tok-1] и т.д.) не нужны, а на каждую ячейку уходит ~16 байт. Что делать?


--------------------
user posted image
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.1451 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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