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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> std::String, в чем ошибка? 
:(
    Опции темы
bel_nikita
Дата 12.1.2004, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

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



есть такая штука:
Код
#include <map>
#include <string>

using namespace std;

typedef enum _EN{
   TEST_ERR,
 TEST_OK,
 TEST_DDD,
}EN;

typedef struct _Error{
 int          Key;
 //char*  Str;
 string *Stroka;
}Error;

Error ErrorData[]=
{
 {TEST_OK, "TEST OK"},
 {TEST_ERR,"TEST ERROR"},
 {TEST_DDD,"TEST DDDD"},
};


но визалЦ ругается:
error C2440: 'initializing' : cannot convert from 'enum _EN' to 'struct _Error'
No constructor could take the source type, or constructor overload resolution was ambiguous
error C2440: 'initializing' : cannot convert from 'char [8]' to 'struct _Error'
No constructor could take the source type, or constructor overload resolution was ambiguous
...
гдыж вместо string вставлю char, то все идет как по маслу. Где ошибка?
Кто подскажет, как работать с этим банным string?
Получается string нельзя всобачить в структуру?

Это сообщение отредактировал(а) bel_nikita - 12.1.2004, 17:12


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
RAN
Дата 12.1.2004, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 709
Регистрация: 14.3.2003
Где: Щёлково Моск.обл.

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



не string*, а просто string
Хотя ошибки странные

Плюс лучше писать EN Key, а не int Key
PM MAIL ICQ   Вверх
mr.DUDA
Дата 12.1.2004, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Если даже поубирать из структуры Error все поля кроме "string", и попробовать создать массив ErrorData, проиницизировав его значениями в фигурных скобках, компилятор ругается в том смысле, что нельзя проинициализировать массив объектов "string". Как-то нужно извратиться и правильно вызвать конструктор. Простая запись {std::string("some value")} тут не катит. sad.gif


--------------------
user posted image
PM MAIL WWW   Вверх
Hearse
Дата 13.1.2004, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Просто при инициализации подбным образом не просходит поиск подходящего перегруженного оператора присваивания
Код

string s="xxx";

прекрасно работает, хотя казалось бы ситуация та же самая...

Так что IMHO придется инициировать каждый элемент по отдельности confused.gif

Это сообщение отредактировал(а) Hearse - 13.1.2004, 09:53
PM MAIL   Вверх
Vyacheslav
Дата 13.1.2004, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Код

typedef struct _Error{
 _Error(int aKey, string aString){ Key = aKey; Stroka = aString;}
 int         Key;
//char*  Str;
string Stroka;
}Error;

Error ErrorData[]=
{
Error(TEST_OK, "TEST OK"),
Error(TEST_ERR,"TEST ERROR"),
Error(TEST_DDD,"TEST DDDD")
};



--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
bel_nikita
Дата 13.1.2004, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

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



Vyacheslav
такое тоже не катит


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
mr.DUDA
Дата 13.1.2004, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Цитата
такое тоже не катит

Странно, а у меня всё скомпилилось. Можно попробовать заменить

Цитата
_Error(int aKey, string aString){ Key = aKey; Stroka = aString;}

на
Цитата
_Error(int aKey, char *aString){ Key = aKey; Stroka = string(aString);}




--------------------
user posted image
PM MAIL WWW   Вверх
bel_nikita
Дата 13.1.2004, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

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



mr.DUDA
попробую еще, более детально разобраться


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
Vyacheslav
Дата 13.1.2004, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Количество запятых проверь smile.gif. Кажется у тебя лишняя



--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
bel_nikita
Дата 13.1.2004, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

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



mr.DUDA
че-та не катит
Код

#include <map>
#include <string>

using namespace std;

//#if(0)
typedef enum _EN{
 TEST_START,
 TEST_DDD,
 TEST_ERR,
 TEST_OK,
 END_ENUM,
}EN;

typedef struct _Error{
 _Error(int aKey, string aString){ Key = aKey; Str = (string)aString;}
 int    Key;
 //char*  Str;
 string Str;
}Error;

Error ErrorData[]=
{
 {TEST_OK, "TEST OK"},
 {TEST_ERR,"TEST ERROR"},
 {TEST_DDD,"TEST DDDD"},
};

typedef std::map<int,char*> MAP;
//#endif


error C2440: 'initializing' : cannot convert from 'enum _EN' to 'struct _Error'
No constructor could take the source type, or constructor overload resolution was ambiguous
вот такое выдает


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
mr.DUDA
Дата 13.1.2004, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Как писал Vyacheslav, вместо
Цитата
Error ErrorData[]=
{
{TEST_OK, "TEST OK"},
{TEST_ERR,"TEST ERROR"},
{TEST_DDD,"TEST DDDD"},
};

нужно вставить
Цитата
Error ErrorData[]=
{
Error(TEST_OK, "TEST OK"),
Error(TEST_ERR,"TEST ERROR"),
Error(TEST_DDD,"TEST DDDD")
};



--------------------
user posted image
PM MAIL WWW   Вверх
bel_nikita
Дата 13.1.2004, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

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



сэнкс
погубила невнимательностьsmile.gif


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


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

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