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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2011, 23:10   #1
Anubys
Форумчанин
 
Регистрация: 08.05.2010
Сообщений: 177
По умолчанию Преобразование строки в об объект

У меня к вам вопрос относительно такого.
Стоит такая задача:
Необходимо преобразовать объект в строку. С этим я справлюсь.
Превратить Строка в объект вот здесь у меня проблема.
Есть такое мнение парсить строку и поочередно перебрасывать вырезаны строки куда надо.
Явно напрашиваются виртуальные операторы.
Готов выслушать ваши идеи спасибо заранее кто откликнется.
Знаю идея немного нелепая (или мне так показалось), но так я вижу решение этой задачи

Код:
#include <iostream>
#include <conio>
#include <fstream>
#include <vcl>
#pragma hdrstop
using namespace std;

class nasinya
{
    private:
       string type_nas; //Поле для типу насіння
    public:
       nasinya() {
          this->type_nas = "Zernyatko";
       }
       nasinya(string _type_nas) {

          this->type_nas = _type_nas;
       }
       string getType() {

          return type_nas;
       }
       void setType(string _type) {

          type_nas = _type;
       }
       virtual void DisplayNas() = 0; //Чисто віртуальна функція
       virtual void SayHallo() = 0;    //Чисто віртуальна функція
};

class grass : public nasinya
{
    private:
       float length; //Поле для зберігання довжини трави
    protected:
       bool ambul;   //Чи є рослина лікувальна?
    public:
       string title; //Поле для зберігання назви трави
       grass();
       grass(string _title, bool _ambul, float _length, string nas);
       void DisplayNas();
       void SayHallo();
       void setLegth(float _length) {
          this->length = _length;
       }
       float getLength() {

          return this->length;
       }
       void setAmbul(bool _ambul) {

          this->ambul = _ambul;
       }
       string getAmbul() {

          if(this->ambul) return "Aga";
          else return "Nea";
       }
       void setTitle(string _title) {

          this->title = _title;
       }
       string getTitle() {

          return this->title;
       }
       void Display();
};

class flower : public grass
{
    private:
       int pelustok;
       string month;
    protected:
       string color;
    public:
       flower();
       flower(string _title, int _pelustok,
              string _color, string _month,
              bool _ambul, float _length,
              string nas);
       void SayHallo();
       void setPel(int _pelustok) {
           this->pelustok = _pelustok;
       }
       int getPelustok() {
           return this->pelustok;
       }
       void setMonth(string _month) {
           this->month = _month;
       }
       string getMonth() {
           return this->month;
       }
       void setColor(string _color) {
           this->color = _color;
       }
       string getColor() {
           return this->color;
       }
       void Display();
};

class flower1 : protected flower
{
    private:
       string temp;
    public:
       void SayHallo();
       string getTemp() {
          return this->temp;
       }
       void setTemp(string _temp) {
          this->temp = _temp;
       }
};

class flower2 : private flower
{
    private:
       string temp;
    public:
       void SayHallo();
       string getTemp() {
          return this->temp;
       }
       void setTemp(string _temp) {
          this->temp = _temp;
       }
};

grass::grass()
{
    this->length = 1.35;
    this->ambul  = true;
    this->title  = "Konoplya";
}

grass::grass(string _title, bool _ambul, float _length, string nas) : nasinya(nas)
{
    this->title  = _title;
    this->ambul  = _ambul;
    this->length = _length;
}

void grass::SayHallo()
{
    cout << "Hallo my langht is " << this->length << " i'm ambul ? " << this->getAmbul()
         << endl;
}

void grass::DisplayNas()
{
    cout << this->getTitle() << " ";
}
void grass::Display()
{
    string text;
    if(ambul) text = "Aga";
    else text = "Nea";
    cout << this->title      << " "
         << this->getAmbul() << " "
         << this->length     << " "
         << this->getType()  << " ";

}

flower::flower()
{
    this->pelustok = 10;
    this->month    = "April";
    this->color    = "Red";
}

flower::flower(string _title, int _pelustok,
              string _color, string _month,
              bool _ambul, float _length,
              string nas) : grass(_title, _ambul, _length, nas)
{
    this->pelustok = _pelustok;
    this->color    = _color;
    this->month    = _month;
}

void flower::Display()
{
    cout << this->getTitle() << " "
         << this->color      << " "
         << this->month      << " "
         << this->getAmbul() << " "
         << this->pelustok   << " "
         << this->getLength()<< " ";
}

void flower::SayHallo()
{
    cout << "I " << this->color << " and I has a " << this->pelustok << " of pelustok "
         << " my month of flowering is " << this->month;
}
Anubys вне форума Ответить с цитированием
Старый 22.12.2011, 01:28   #2
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Преобразование строки в об объект
Код:
std::string someString = "string";
Вот вам строка, которая является объектом, и ничего преобразовывать не надо.
Корректно напишите что вам нужно (если конечно мой вариант не устраивает)
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 22.12.2011, 11:43   #3
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Я так и не вразумел три вещи:

1. Где именно в вашем коде происходит преобразование объекта в строку.

2. Покажу на примере:
Код:
void setMonth(string _month) {
           this->month = _month; //зачем здесь используется this?
       }
3. Для чего в данной архитектуре используется полиморфизм?
_Bers вне форума Ответить с цитированием
Старый 22.12.2011, 13:54   #4
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от _Bers Посмотреть сообщение
1. Где именно в вашем коде происходит преобразование объекта в строку.
А вы можете вразумить что значит "преобразование объекта строку", ибо я - нет
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 22.12.2011, 14:01   #5
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от Blade Посмотреть сообщение
А вы можете вразумить что значит "преобразование объекта строку", ибо я - нет
Я не знаю, что именно подразумевал ТС.

Единственное подобного рода преобразование, которое я ведаю - суть сериализация объекта.

Строка - это массив типа чар - суть просто набор байтов.
Объект - это область памяти - суть просто набор байтов.

Можно представить объект не в виде объекта, а в виде последовательности байтов, которую можно "загрузить" в тот же стринг, и, например, скормить cout.

Например, можно сделать что-то вроде:

Код:
//где то на одном из уровней архитектуры:
cout << Serialize(obj); //сначала объект преобразуется к строке, 
                               //а потом отправляется в странствие
Код:
//где то на другом уровне архитектуры (а возможно, в другом процессе)
cin >> DeSerialize(&obj); //объект прошёл через трубу, и вынырнул в другом месте.
_Bers вне форума Ответить с цитированием
Старый 22.12.2011, 20:27   #6
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Сильно сомневаюсь, что ТС имел ввиду сериализацию
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 26.12.2011, 01:45   #7
Anubys
Форумчанин
 
Регистрация: 08.05.2010
Сообщений: 177
По умолчанию

Экспериментировал так ничего и не получилось, нужно следующее: метод получает строку в результате создает объект и возвращает его в качестве результата
Anubys вне форума Ответить с цитированием
Старый 26.12.2011, 06:47   #8
Mahin
Пользователь
 
Регистрация: 18.11.2009
Сообщений: 39
По умолчанию

то есть тебе нужен конструктор?
Mahin вне форума Ответить с цитированием
Старый 26.12.2011, 10:52   #9
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от Anubys Посмотреть сообщение
метод получает строку в результате создает объект и возвращает его в качестве результата
Код:
...
SomeClass OtherClass::Func(const std::string& str)
{
     return SomeClass();
}
...
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование строки PeRt Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 23.04.2010 10:01
Паскаль, преобразование строки saveliev87 Помощь студентам 6 12.01.2010 17:07
Преобразование строки Neeter Общие вопросы C/C++ 5 05.07.2009 16:25
преобразование строки xaero93 Помощь студентам 3 05.03.2009 13:00
Преобразование строки(ASM) ManU Помощь студентам 4 11.06.2008 17:20