Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 09.09.2010, 20:47   #1
the_deer_one
Участник клуба
 
Аватар для the_deer_one
 
Регистрация: 04.04.2010
Сообщений: 1,557
По умолчанию добавить в объект объект.

Есть объект. Как в него добавить ещё один объект.

Код:
class Kolle {
public:
/* сюда надо добавить */
};


Kolle kolle;


Sometupe someobject;
Как в kolle добавить someobject? Тоесть сделать someobject переменной объекта kolle?
the_deer_one вне форума Ответить с цитированием
Старый 09.09.2010, 20:52   #2
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Код:
class Kolle
{
public:
      Sometype somobject;
};
Если я не понял вопроса, извините.
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 09.09.2010, 21:01   #3
the_deer_one
Участник клуба
 
Аватар для the_deer_one
 
Регистрация: 04.04.2010
Сообщений: 1,557
По умолчанию

Syuf
Добавить не в класс, а в уже существующий объект.
the_deer_one вне форума Ответить с цитированием
Старый 09.09.2010, 21:03   #4
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Что нам мешает завести в классе указатель на объект другого класса и в него добавлять адреса нужных объектов?
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 09.09.2010, 21:13   #5
the_deer_one
Участник клуба
 
Аватар для the_deer_one
 
Регистрация: 04.04.2010
Сообщений: 1,557
По умолчанию

Указатель один. А примешать в него объектов часто будет нужно несколько. Да и не нужен там указатель. Эти примесные объекты нигде кроме как внутри этого объекта не нужны.
Плюс имя переменной определено, а это не есть хорошо.

Можно конечно как пожарный вариант завести один map. Где ключ это имя объекта, а значение это примесной объект. Но тогда доступ к нему будет криво выглядеть.
the_deer_one вне форума Ответить с цитированием
Старый 09.09.2010, 21:16   #6
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Так может унаследовать отдельный класс для "этого объекта"?
Чего вам конкретно надо добиться?!
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 10.09.2010, 09:41   #7
the_deer_one
Участник клуба
 
Аватар для the_deer_one
 
Регистрация: 04.04.2010
Сообщений: 1,557
По умолчанию

Ну, сделать точно, то же, но переключать состояния не передачей строки, а функтором, Собственно затем мне и нужно объект добавить. Я просто хотел привязывать выполнение этого функтора, к другим функциям.

Но я сомневаюсь что стоит это делать, я вчера чуть подумал, и там стоооолько трудностей возникает. Что может оставить всё, примерно так, как есть сейчас?

Код:
#include <iostream>
#include <string>
#include <map>
using namespace std;

class State {
    public:
        string stateName;
        map<string, State*> tranzRule;

    void sName() {
        cout<<stateName<<endl;
    }

    void addTranz(string nameTr, State *dashState) {
        tranzRule.insert( pair<string, State*>(nameTr, dashState) );
    }

    State execTranz(string nameTr) {

        return *(tranzRule[nameTr]);
    }

    State(string temp) : stateName(temp) {/* empty */}
};

class txtStateMachine {
    public:
        State currentSt;

        void execTranz(string nameTr) {
            currentSt = currentSt.execTranz(nameTr);
        }

        void sName() {
            currentSt.sName();
        }

        txtStateMachine(State temp) : currentSt(temp) {/*empty*/}
};



int main() {
    State s1("this state 1");
    State s2("this state 2");
    s1.addTranz("toS2", &s2);
    s2.addTranz("toS1", &s1);

    txtStateMachine tSM(s1);
    tSM.sName();
    tSM.execTranz("toS2");
    tSM.sName();
    tSM.execTranz("toS1");
    tSM.sName();
    return 0;
}
the_deer_one вне форума Ответить с цитированием
Старый 10.09.2010, 12:17   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

Цитата:
завести в классе указатель на объект другого класса
А я бы завел там не указатель а list. и в него добавлял (впрочем я так и делаю)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объект WordArt ruavia3 Microsoft Office Excel 1 16.11.2009 18:46
Текст + Объект segail Microsoft Office Excel 9 04.08.2009 10:36
задача на объект Romer9999 Помощь студентам 9 27.02.2009 13:00
Форма-Добавить объект-Назначить слушатель события tolikman Microsoft Office Excel 6 10.09.2008 16:18


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS