Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
 Аватар для Игорюня
20 / 16 / 11
Регистрация: 07.12.2013
Сообщений: 244

Вложенные объекты

03.04.2014, 13:07. Показов 2766. Ответов 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" не является базовым классом или членом
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.04.2014, 13:07
Ответы с готовыми решениями:

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

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

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

6
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
03.04.2014, 13:12
Лучший ответ Сообщение было отмечено Игорюня как решение

Решение

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");
}
1
188 / 187 / 46
Регистрация: 24.03.2011
Сообщений: 670
03.04.2014, 13:13
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 определи раньше первого, либо вставь, как я показал (типа предварительно объявление, что такой класс действительно есть.
1
 Аватар для Игорюня
20 / 16 / 11
Регистрация: 07.12.2013
Сообщений: 244
03.04.2014, 13:22  [ТС]
И ещё вопрос,чтобы понять правильно я понял суть вложения.

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

То есть вложение необходимо,когда нам нужно описать объект с помощью других объектов?
0
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
03.04.2014, 13:25
Цитата Сообщение от Игорюня Посмотреть сообщение
То есть вложение необходимо,когда нам нужно описать объект с помощью других объектов?
когда свойство объекта можно выделить в отдельный объект со своими свойствами (бак свойство машины, у него есть свойства объем и вес)
Цитата Сообщение от Игорюня Посмотреть сообщение
суть вложения.
это не вложение, это называется агрегирование(мог спутать с композицией) - советую прочитать про них
0
 Аватар для Игорюня
20 / 16 / 11
Регистрация: 07.12.2013
Сообщений: 244
03.04.2014, 13:26  [ТС]
error C2079: "one::object" использует неопределенный class "two"
0
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
03.04.2014, 13:35
Игорюня, косячек, такая конструкция помогла бы если, 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");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.04.2014, 13:35
Помогаю со студенческими работами здесь

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

Из базы не извлекаются вложенные объекты
Добрый день. Есть у меня класс продукт: public class Product { public int ID { get; set; } public String Name {...

Дублируются в базу данных вложенные объекты
Добрый день. У меня такая праблемка. Есть модель Product, которая включается в себя модель Category. Все контроллеры генерируются VS в...

Как создать "вложенные объекты"?
Товарищи, выручайте! Нужно сделать схему этажей здания. На этажах схематично обозначены комнаты. Как сделать, чтобы при щелчке по...

Как уничтожать динамические объекты и вообще объекты, если это необходимо сделать в их процедурах?
Создать отдельную процедуру CloseObject(Object: TObject) и вызывать ее в конце процедуры или так тоже нельзя? А то бесят эти access...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru