Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2012, 15:17   #1
zigler
Пользователь
 
Регистрация: 17.12.2011
Сообщений: 15
По умолчанию Сложности с присваиванием

Доброго времени суток!

Подскажите, как решить проблему с присваиванием значения std::string в int.


Код:
// testsss.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <ctime>
#include <string>
#include <fstream>
#include <iostream>

using namespace std;

std::string ***LNodeType_DO_attr;

class CDA_Quality {
	public:
		std::string validity;
		std::string overflow;
		int timeout;
		CDA_Quality();
};
CDA_Quality::CDA_Quality(){}

class CDC_INC {
	public:
		CDA_Quality q;
		CDC_INC();
};
CDC_INC::CDC_INC(){}

class LN_ZBAT {
	public:
		CDC_INC EEHealth; //External equipment health
		LN_ZBAT();
};
LN_ZBAT::LN_ZBAT(){}


int main(int argc, char* argv[])
{
	int h,k,p;
	LNodeType_DO_attr = new std::string **[5];
	for(h=0;h<5;h++)
	{
		LNodeType_DO_attr[h] = new std::string *[5];
		for(k=0;k<5;k++)
		{
			LNodeType_DO_attr[h][k] = new std::string [5];
			for(p=0;p<5;p++)
			LNodeType_DO_attr[h][k][p]="";//test
		}
	}

	LN_ZBAT battery1;
	LNodeType_DO_attr[1][3][2] = "kkkkk";
	std::string ppp;ppp = "dddd";

	battery1.EEHealth.q.validity = ppp;
	battery1.EEHealth.q.overflow = LNodeType_DO_attr[1][3][2];
	battery1.EEHealth.q.timeout = (int)LNodeType_DO_attr[1][3][2];

	cout << battery1.EEHealth.q.validity << endl;
	cout << battery1.EEHealth.q.overflow << endl;
	cout << battery1.EEHealth.q.timeout << endl;
	return 0;
}

Выдает ошибку

Compiling...
testsss.cpp
E:\files=study\kurs V\Deutschland\Forschungsprojekt\cpp test\testsss\testsss.cpp(60) : error C2440: 'type cast' : cannot convert from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'int'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
Error executing cl.exe.

testsss.exe - 1 error(s), 0 warning(s)
zigler вне форума Ответить с цитированием
Старый 10.02.2012, 21:12   #2
Сыроежка
Форумчанин
 
Регистрация: 01.07.2011
Сообщений: 423
По умолчанию

Вместо этого предожения

battery1.EEHealth.q.timeout = (int)LNodeType_DO_attr[1][3][2];

попробуйте использовать

battery1.EEHealth.q.timeout = atoi( ( LNodeType_DO_attr[1][3][2] ).c_str() );
Со мной можно встретиться на www.clipper.borda.ru
Сыроежка вне форума Ответить с цитированием
Старый 10.02.2012, 22:09   #3
zigler
Пользователь
 
Регистрация: 17.12.2011
Сообщений: 15
Радость

Цитата:
Сообщение от Сыроежка Посмотреть сообщение
Вместо этого предожения

battery1.EEHealth.q.timeout = (int)LNodeType_DO_attr[1][3][2];

попробуйте использовать

battery1.EEHealth.q.timeout = atoi( ( LNodeType_DO_attr[1][3][2] ).c_str() );
спасибо огромное за эту добавочку - .c_str()
пробовал без нее atoi, работать отказывалось
а вот теперь все замечательно)))
zigler вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сложности с .htaccess xxNpCxx PHP 6 13.02.2011 21:30
Сложности с запросом Kolik317 БД в Delphi 5 19.08.2009 12:09
Проблема с присваиванием в формуле motorway Microsoft Office Excel 7 23.07.2009 04:45
Сложности с вычислениями Adlar Microsoft Office Access 0 23.06.2009 22:20