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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> vector<Struct>, trouble with STL 
:(
    Опции темы
Jongler
Дата 30.10.2006, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго времени суток всем кого заинтересовала моя тема.
Неожиданно получил error.
Хотел создать вектор со структурами в качестве элементов ( по  моему вполне законно) на что получил грубый отказ отладчика.
Поискал в умных книжках, и(у Б.Страуструпа стр88) нашел похожий пример:
Код

#include <string>
#include <vector>
...
struct Entry{
    string name;
    int number;
};
[color=red]vector<Entry>phone_book(1000);[/color]
...
}

на который отладчик ругается неменьше(красная строка).
Пробовал в MVisual C++ и Borland C++ Builder(пишет: teamplate can't have static or local linkage)
вообщем хочется разобраться что к чему.
Заранее благодарю.
PM MAIL   Вверх
Daevaorn
Дата 30.10.2006, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Jongler, покажи свой код и минимальное приложение которое не компилируется. 

P.S. отладчик то тут вообще причем?
PM MAIL WWW   Вверх
JackYF
Дата 30.10.2006, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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



А там пробел не нужен случайно?

Код

#include <string>
#include <vector>
...
struct Entry{
    string name;
    int number;
};
[color=red]vector<Entry> "вот здесь вот" phone_book(1000);[/color]
...
}



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Fazil6
Дата 30.10.2006, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



судяпо всему struct Entry - тип локальный, а такой нельзя использовать в качестве аргумента шаблона. 
error C2926: : types with no linkage cannot be used as template arguments


Это сообщение отредактировал(а) Fazil6 - 30.10.2006, 21:42
PM MAIL   Вверх
JackYF
Дата 30.10.2006, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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



Код

#include <string>
#include <vector>

struct Entry {
    std::string name;
    int number;
};

std::vector<Entry> phone_book(1000);

int main()
{
        return 0;
}


Следующий код скомпилился без проблем на Code::Blocks 1.0 Build 23102006

Не понял пред. пост...
Чем тип Entry не подходит для шаблона?...


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Fazil6
Дата 30.10.2006, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Код

#include <string>
#include <vector>
int main()
{

struct Entry {
    std::string name;
    int number;
};

std::vector<Entry> phone_book(1000);


return 0;
}

скомпиллируй вот это
PM MAIL   Вверх
Олег2005
Дата 30.10.2006, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



#include <string>
#include <vector>
using namespace std;

PM MAIL WWW MSN   Вверх
bsa
Дата 31.10.2006, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Fazil6 имел в виду это:
Код
#include <string>
#include <vector>
main() {
   struct Entry {
       std::string name;
       int number;
   };

   std::vector<Entry> phone_book(1000);

   return 0;
}

Это и приводит к указанной выше ошибке. Объявление структуры должно быть вне тела функции, если она используется для конкретизации шаблона.


Это сообщение отредактировал(а) bsa - 31.10.2006, 00:28
PM   Вверх
Damarus
Дата 31.10.2006, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

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



Цитата(bsa @  31.10.2006,  00:27 Найти цитируемый пост)
Fazil6 имел в виду это:

 smile Кстати, компилятор из VS2005 на таком коде слетает.
PM MAIL ICQ Jabber   Вверх
Jongler
Дата 31.10.2006, 01:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо всем кто хотел помочь  smile (у вас получилось)
действительно обьявление структуры до функции помогло


Это сообщение отредактировал(а) Jongler - 31.10.2006, 02:10
PM MAIL   Вверх
archimed7592
Дата 31.10.2006, 02:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


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

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



Jongler, #include "stdafx.h" - потом идёт программа (другие инклюды и сам код). ;)


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Damarus
Дата 31.10.2006, 03:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

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



Цитата(archimed7592 @  31.10.2006,  02:16 Найти цитируемый пост)
Jongler, #include "stdafx.h" - потом идёт программа (другие инклюды и сам код). ;)

Здесь зачем smile 
PM MAIL ICQ Jabber   Вверх
archimed7592
Дата 31.10.2006, 04:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


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

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



Damarus,  smile  smile 
Jongler, изменил пост пока я писал smile
было
Цитата
У меня сейчас нет доступа к C++ Builder'u. Запускаю на MVisual C++(пользую первый раз может чего не так делаю).
 он пишет вот так :  fatal error C1010: unexpected end of file while looking for precompiled header directive 
а using namespace std; я прописываю



--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Jongler
Дата 6.11.2006, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



archimed7592,  извиняй 
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.0615 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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