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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
#1

Вложенные объекты - C++

03.04.2014, 13:07. Просмотров 409. Ответов 6
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
 
class one
{
public:
    one(int a):object(a){}
private:
    two object;
    int a;
};
 
class two
{
private:
    int a;
};
 
int main()
{
    one first(10);
    system("pause");
}
Что-то туговато идёт вложение,подскажите,где накосячил.

error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "object"
error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
error C2614: one: недопустимая инициализация члена: "object" не является базовым классом или членом
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2014, 13:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вложенные объекты (C++):

Вложенные объекты - C++
Есть класс А и класс В. В классе А объявлен объект класса В (В ав;). Можно ли выделить для этого объекта (ав) память динамически. И как...

Вложенные CMap или CArray-объекты. Ошибка компилятора или неправильная работа. - C++
Имеется: struct OPER { CString name; //название CString symbol; //обозначение };

Функция создает объекты и указателями на них заполняет массив. При выходе из функции вызываются деструкторы объектов. Как сохранить объекты? - C++
Вопрос прост: как при выходе из функции сохранить объекты, которые были созданы в данной функции (указатели объектов положены в массив)?

В окне перемещаются объекты, отталкиваясь от стенок окна. Каждый объект имеет свой поток, перемещающий его. Встретившись, объекты начинают двигаться - C++
В окне перемещаются объекты, отталкиваясь от стенок окна. Каждый объект имеет свой поток, перемещающий его. Встретившись, объекты...

Вложенные операторы С++ - C++
вывести числа в виде таблицы 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74...

Вложенные структуры - C++
Разбираюсь с вложенными структурами. Вопрос: как вывести строковый элемент вложенной структуры? #include &lt;iostream&gt; using namespace...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
03.04.2014, 13:12 #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
#include <iostream>
using namespace std;
 
class two;//cказали что есть такой класс, реализацию которого опишем позже
class one
{
public:
    one(int a):object(a){}
private:
    two object;
    int a;
};
 
class two
{
private:
    int a;
};
 
int main()
{
    one first(10);
    system("pause");
}
monolit
185 / 184 / 22
Регистрация: 24.03.2011
Сообщений: 667
Завершенные тесты: 1
03.04.2014, 13:13 #3
C++
1
2
3
4
5
6
7
8
9
10
class two;
 
class one
{
public:
    one(int a):object(a){}
private:
    two object;
    int a;
};
Порядок объявления - важен. Либо two определи раньше первого, либо вставь, как я показал (типа предварительно объявление, что такой класс действительно есть.
Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
03.04.2014, 13:22  [ТС] #4
И ещё вопрос,чтобы понять правильно я понял суть вложения.

Есть какой-то класс engine(двигатель),который имеет мощность(int power),вес(int weight).Есть класс бак
(tank),который имеет объём(int volume) и вес(int weight).И есть класс машина(car),которая имеет двигатель
(engine object1),и бак(tank object2).

То есть вложение необходимо,когда нам нужно описать объект с помощью других объектов?
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
03.04.2014, 13:25 #5
Цитата Сообщение от Игорюня Посмотреть сообщение
То есть вложение необходимо,когда нам нужно описать объект с помощью других объектов?
когда свойство объекта можно выделить в отдельный объект со своими свойствами (бак свойство машины, у него есть свойства объем и вес)
Цитата Сообщение от Игорюня Посмотреть сообщение
суть вложения.
это не вложение, это называется агрегирование(мог спутать с композицией) - советую прочитать про них
Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
03.04.2014, 13:26  [ТС] #6
error C2079: "one::object" использует неопределенный class "two"
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
03.04.2014, 13:35 #7
Игорюня, косячек, такая конструкция помогла бы если, class one содержал ссылку или указатель на two, придется делать так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class two
{
public:
    two(int _a):a(_a){}
private:
    int a;
};
class one
{
public:
    one(int _a):object(_a){}
private:
    two object;
    int a;
};
 
 
 
int main()
{
    one first(10);
    system("pause");
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2014, 13:35
Привет! Вот еще темы с ответами:

Вложенные структуры - C++
Здравствуйте! Туплю... Как мне инициализировать структуру ААА и N вложенных в нее структур BBB. struct BBB { quint8 c; ...

Вложенные циклы С++ - C++
вывести на экран числа в виде таблицы 6 6 6 6 6 7 7 7 7 8 8 8 9 9 10

Вложенные макросы - C++
Добрый день. Есть такой макрос: #define QW_QWERTY(data) int testvar = data; #define HELPER2(MACROS, ...) QW_##MACROS __VA_ARGS__ ...

вложенные циклы - C++
вывод на экран натуральных чисел лежащих в интервале и делящихся нацело на 5


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
03.04.2014, 13:35
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru