crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

nikita
  опции профиля:
сообщение 20.3.2013, 11:51
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 34
Регистрация: 19.10.2012
Пользователь №: 3570

Спасибо сказали: 2 раз(а)




Репутация:   0  


Заранее прошу прощения за столь глупый вопрос) Есть код:
...
int x = 3;
...
void MyClass::writeFromFile(QString fileName)
{ ... }


Суть в том, что в методе writeFromFile из файла считывается 2 поля : 'x' и '5'. Можно ли как-то переменной с именем 'x' присвоить считанное значение(в данном случае 5). Если бы Х был полем класса MyClass, то можно было бы воспользоваться методом findChild(), а в этой ситуации я в тупике. Переменных должно быть много и писать процедуру разбора считанной строки с кучей IF-ов не хочется. Подскажите как быть.

Сообщение отредактировал nikita - 20.3.2013, 11:51
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
ViGOur
  опции профиля:
сообщение 21.3.2013, 9:59
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Можно сделать подобное если вынести все твои переменные в отдельный класс, и сделать его сериализацию (переопределить операторы ввода вывода), что-то вроде:
struct CClass
{
    int m_a, m_b, m_c;
    CClass(int a, int b, int c): m_a(a), m_b(b), m_c(c){}
};

std::ostream &operator <<(std::ostream &stream, const CClass &c)
{
    stream << c.m_a << " " << c.m_b << " " << c.m_c;
    return stream;
}

std::istream &operator >>(std::istream &stream, CClass &c)
{
    stream >> c.m_a >> c.m_b >> c.m_c;

    return stream;
}

int main(int , char **)
{
    CClass c(1,2,3);

    std::cout << c << std::endl;
    std::cin >> c;
    std::cout << c << std::endl;

    return 0;
}
Единственное тебе нужно будет поддерживать актуальность сериализуемых данных и все...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 7.6.2025, 11:24