Форум программистов, компьютерный форум CyberForum.ru

Класс внутри класса - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.70
4ajok
 Аватар для 4ajok
0 / 0 / 0
Регистрация: 01.12.2009
Сообщений: 9
11.04.2011, 20:42     Класс внутри класса #1
Есть 2 класса: большой -А и меньшый-Б.
Класс Б есть параметром класса А.
в большом классе есть процедуры использующие обекты класса Б!

Как зделать что б при инициализации класса А создавался и обект класса Б

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class B
{
//набор параметров!
};
 
class A
{
A(){ B *objB;}//конструктор
B objB;
get_data(B &objB);
//набор параметров!
};
 
void main()
{
A objA;
 
get_data(objB);//<<<< тут ошыбка неизвесный идентификатор 'objB'
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
11.04.2011, 21:06     Класс внутри класса #2
В конструкторе, разумеется. В списке инициализации. Многие ими пренебрегают и совсем не используют, а вот в таком случае они незаменимы.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
 
class A
{
public:
    A(int a = 0):
    _a(a)
    {
    }
 
   int get_a() const
   {
       return _a;
   }
 
private:
    int _a;
};
 
class B
{
public:
    B(int b = 0):
    _b(b)
    {
    }
 
    int get_b() const
    {
        return _b.get_a();
    }
 
private:
    A _b;
};
 
int main()
{
    B b(10);
 
    std::cout << b.get_b() << std::endl;
 
    return 0;
}
4ajok
 Аватар для 4ajok
0 / 0 / 0
Регистрация: 01.12.2009
Сообщений: 9
11.04.2011, 21:15  [ТС]     Класс внутри класса #3
так ниче не выйдет)))
я упростил когда вписывал......
там оч большая иэрархия и десятки параметров.......
все оказалось намного проще
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class B
{
//набор параметров!
};
 
class A
{
A(){ B *objB;}//конструктор
B objB;
get_data();
//набор параметров!
};
 
void main()
{
A objA;
 
get_data();
}
Всетаки обект внутренего класса создался! ошыбка была в другом!
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
11.04.2011, 21:49     Класс внутри класса #4
Цитата Сообщение от 4ajok Посмотреть сообщение
так ниче не выйдет)))
Да ну? Только что скомпилировал и запустил - вышло!

Добавлено через 1 минуту
И ещё - объект-то создастся таким образом, и совершенно ни к чему создавать непонятно кому нужный указатель с тем же именем в конструкторе. Но таким образом объект создастся лишь с конструктором по-умолчанию, конструктор с параметрами получится вызвать только так, как я показал выше.
4ajok
 Аватар для 4ajok
0 / 0 / 0
Регистрация: 01.12.2009
Сообщений: 9
11.04.2011, 21:55  [ТС]     Класс внутри класса #5
Цитата Сообщение от silent_1991 Посмотреть сообщение
Да ну? Только что скомпилировал и запустил - вышло!

Добавлено через 1 минуту
И ещё - объект-то создастся таким образом, и совершенно ни к чему создавать непонятно кому нужный указатель с тем же именем в конструкторе. Но таким образом объект создастся лишь с конструктором по-умолчанию, конструктор с параметрами получится вызвать только так, как я показал выше.
Ето не означала что у вас неправильный код!
К томуже я спрашывал как реализовать создание обекта внутреннего класса в конструкторе глобального, а ваш код демонстрирует роботу с указателями на сок я понял!
Из-за сложности проекта ваш подход не даст результатов!
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
11.04.2011, 21:58     Класс внутри класса #6
Цитата Сообщение от 4ajok Посмотреть сообщение
роботу с указателями
После этого я не уверен, что вы способны адекватно оценить сложность проекта. Покажите мне, где в моём коде работа с указателями, и почему "мой" (а на самом деле общепризнанный и иногда единственный) подход вдруг на сложных проектах перестал давать результаты?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.04.2011, 16:07     Класс внутри класса
Еще ссылки по теме:

Не создается указатель на класс внутри класса C++
C++ Видимость экземпляра класса внутри класса
Класс внутри класса С++ C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
12.04.2011, 16:07     Класс внутри класса #7
Цитата Сообщение от 4ajok Посмотреть сообщение
A(){ B *objB;}//конструктор
Улыбнуло.
Yandex
Объявления
12.04.2011, 16:07     Класс внутри класса
Ответ Создать тему
Опции темы

Текущее время: 23:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru