Сложности С Присваиванием

Тема в разделе "MS Visual C++", создана пользователем zigler, 10 фев 2012.

  1. zigler

    zigler Гость

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

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

    Код (Text):
    // 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\cpptest\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)
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    http://www.cplusplus.com/reference/iostream/stringstream/

    Код (Text):
    battery1.EEHealth.q.timeout = (int)LNodeType_DO_attr[1][3][2]; //замени на
    sstr << (int)LNodeType_DO_attr[1][3][2];
    sstd >> battery1.EEHealth.q.timeout;
    где sstr - Объхект класса stringstream(ссылка на описание выше)

    Но мне кажется что код у вас не самый хороший - вот это [1][3][2] - ужасно

    А вот привык уже к хорошему - в QString таки есть метод toInt() ;)

    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">О форуме и подсветке</div></div><div class="sp-body"><div class="sp-content">
    а не плохо бы показывать номера строк при подсветке кода, ато по описанию ошибки вижу что 60 строка, а как ее найти?
     
Загрузка...
Похожие Темы - Сложности Присваиванием
  1. bestguru
    Ответов:
    1
    Просмотров:
    547
  2. lemuriez
    Ответов:
    4
    Просмотров:
    1.548
  3. phantom76
    Ответов:
    11
    Просмотров:
    3.705

Поделиться этой страницей