Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Инициализировать класс внутри другого класса 
V
    Опции темы
kurtis
Дата 29.11.2009, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 10.8.2007

Репутация: нет
Всего: нет



Здравствуйте!
Есть следующий код:
Код

#include    <iostream>
using namespace std;

class Insider
{
    public:
        Insider(unsigned int & _value)          // constructor
        :
        my_value (_value)
        {;};
        unsigned int get_my_value() {
            ++my_value;
            return my_value;
        }
    private:
        unsigned int & my_value;
}; // -----  end of class Insider  -----

class Global
{
    public:
        Global (unsigned int & _value)          // constructor
        :
        some_value (_value)
        {;};
        void driver() {
            some_value = my_insider1.get_my_value() + \
                                        my_insider2.get_my_value();
        }
        void print_value() { 
            cout << some_value << endl; 
        }
    private:
        unsigned int & some_value;
        Insider my_insider1;
        Insider my_insider2;
}; // -----  end of class GLobal  -----

unsigned int some_global_value = 190;

Global my_global(some_global_value);

int main()
{
    cout << "This is some foo!\n" << endl;

    my_global.driver();
    my_global.print_value();

    return 0;
}

В состав классе Global входят 2 дополнительных класса, которые заведуют какими-то данными, и у них есть одна переменная, которая передается по ссылке (my_value).
Как правильно объявить класс Global, так чтоб оба внутренних класса инициализировались нужными значениями? Вариант с созданием отдельно классов my_insider1 и my_insider2 (внешними относительно Global) с дальнейшей передачей их по ссылке, не подходит!

Спасибо за внимание! smile 

P.S. Приведенный фрагмент кода, компилируется со следующими ошибками:
Код

mike@myHome:/tmp$ colorgcc test.cpp 
test.cpp: In constructor ‘Global::Global(unsigned int&)’:
test.cpp:41: error: no matching function for call to ‘Insider::Insider()’
test.cpp:24: note: candidates are: Insider::Insider(unsigned int&)
test.cpp:22: note:                 Insider::Insider(const Insider&)
test.cpp:41: error: no matching function for call to ‘Insider::Insider()’
test.cpp:24: note: candidates are: Insider::Insider(unsigned int&)
test.cpp:22: note:                 Insider::Insider(const Insider&)


PM MAIL   Вверх
mes
Дата 29.11.2009, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Код

   Global (unsigned int & _value)          // constructor
        :
        some_value (_value),
        my_insider1 (_value),
        my_insider2 (_value){}


P.S. Вы путаете, что есть объект, а что класс..


--------------------
PM MAIL WWW   Вверх
kurtis
Дата 29.11.2009, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 10.8.2007

Репутация: нет
Всего: нет



Спасибо, то что нужно!
PM MAIL   Вверх
Destreee
  Дата 16.6.2012, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 16.6.2012

Репутация: нет
Всего: нет



Всем привет. Вообщем проблема такая. Есть несколько классов

Код

WEAPON CLASSES
 
class WeaponType
{
public:
    WeaponType(void);
    virtual ~WeaponType(void);
 
    void Display(void);
 
protected:
float damage;
int ammo;
};
 
class Swords : public WeaponType { 
 
public:
    Swords(void);
    virtual ~Swords(void);
 
    void Display(void);
 
};
 
PLAYER
 
class Footman
{
public:
 
    Footman(void);
    Footman(int points);
    virtual ~Footman(void);
 
 
 
    void setWeapon(int) {
            switch(type) {
    case 1: this->weapon = new Swords(); break;
    case 2: break;
    default: std::cout << "Error! Wrong weapon type." << std::endl;
    }
           //this->weapon = new Swords();
 }
 
    //GETTER
    int getHP() const;
 
protected:
 
WeaponType *weapon;
 
};


ОШИБКИ: 
Цитата

Error 1 error LNK2019: unresolved external symbol "public: __thiscall Swords::Swords(void)" (??0Swords@@QAE@XZ) referenced in function "public: __thiscall Footman::Footman(int)" (??0Footman@@QAE@H@Z)

 Error 2 error LNK1120: 1 unresolved externals D:\PROJECTS\C++\AdventureGame\Debug\AdventureGame.exe AdventureGame


Я хочу чтобы оружие вибиралось через функцию именно таким способом, но пока ничего не получилось и решения ненашел. Подскажите как можно решить проблему ? С++ изучаю недели 2, чтото подсказывает мне что я делаю не правильно. Если проблема так не решается, подскажите как подругому можно ее решить.

 Извините если не правильно обьяснил, давно не разговаривал по русски, надеюсь на помощь или советы
PM MAIL   Вверх
borisbn
Дата 16.6.2012, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Цитата(Destreee @  16.6.2012,  13:52 Найти цитируемый пост)
чтото подсказывает мне что я делаю не правильно

Это точно. А именно - задаёшь свой вопрос в чужой теме. Да ещё и вопрос никак не связанный с темой


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Destreee
Дата 16.6.2012, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 16.6.2012

Репутация: нет
Всего: нет



я создал тему , а ее почемуто обьеденило вместе с этой....
PM MAIL   Вверх
borisbn
Дата 17.6.2012, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Цитата(Destreee @  16.6.2012,  16:47 Найти цитируемый пост)
я создал тему , а ее почемуто обьеденило вместе с этой.... 

user posted image
уверен, что нажал 2, а не 1 ?  smile 

Цитата(Destreee @  16.6.2012,  13:52 Найти цитируемый пост)
Swords(void);

Это - описание функции, а где определение ? Должно быть в cpp-шнике. Если есть, то включен ли cpp-ник в проект ?
Цитата(Destreee @  16.6.2012,  13:52 Найти цитируемый пост)
void setWeapon(int) {
            switch(type) {

откуда взялся type ?



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0758 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.