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

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

Войти
Регистрация
Восстановить пароль
 
Satansoft
8 / 8 / 1
Регистрация: 27.02.2012
Сообщений: 718
#1

Взаимодействие между классами - C++

26.11.2014, 01:50. Просмотров 489. Ответов 4
Метки нет (Все метки)

При попытке создать указатель на объект класса в public секции другого класса из которого будет обращение к его методу...

C++
1
Cook *cok
пишет, что Cook - не существующий тип...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2014, 01:50     Взаимодействие между классами
Посмотрите здесь:

C++ Отличия между структурами и классами
C++ Реализация отношений между классами is-a, has-a, uses-a в С++
C++ Организация общения между классами
C++ Отношения между классами и объектами
C++ OOP (все принципы ООП и основные отношения между классами)
Передача std::vector между классами C++
Передача данных между классами C++
Работа с классами и пересечение их между собой (задача о городах и поездах) C++
Связь между 2 классами C++
C++ Передача данных между классами
Сформируйте взаимное дружественное отношение между классами C++
Программа в которой реализируется взаимодействия между классами C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12695 / 7169 / 800
Регистрация: 27.09.2012
Сообщений: 17,676
Записей в блоге: 2
Завершенные тесты: 1
26.11.2014, 04:01     Взаимодействие между классами #2
ну так при объявлении класс Cook должен быть известен в этом месте. Для указателей и ссылок достаточно forward declaration сделать:
C++
1
class Cook ;//или что там у Вас есть Cook
Там, где будет
Цитата Сообщение от Satansoft Посмотреть сообщение
обращение к его методу...
должна быть известна уже структура самого класса, то бишь должно быть доступно его описание:
C++
1
2
3
4
5
class Cook
{
   Cook (/*бла-бла-бла*/) ;
   //бла-бла-бла
};
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3504 / 1786 / 472
Регистрация: 18.10.2014
Сообщений: 3,304
26.11.2014, 04:16     Взаимодействие между классами #3
Цитата Сообщение от Satansoft Посмотреть сообщение
пишет, что Cook - не существующий тип...
Ну раз пишет - значит несуществующий. В языке С++ все надо объявлять перед использованием. Если вы не объявили типа 'Cook', то он будет "несуществующим".
Satansoft
8 / 8 / 1
Регистрация: 27.02.2012
Сообщений: 718
26.11.2014, 16:13  [ТС]     Взаимодействие между классами #4
То есть в разделе Public/Private/Protected объявить Class Cook, подключить *.h этого класса и можно обращаться к его методам? А указатель на класс не обязателен?
aLarman
640 / 561 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
26.11.2014, 16:27     Взаимодействие между классами #5
в хедере
C++
1
2
3
4
5
6
7
8
9
10
11
class Cook;
 
class MyClass
{
public:
MyClass(){}
void registerCook(Cook * cook);
void method();
private:
Cook * _cook;
};
в срр-шнике
C++
1
2
3
4
5
6
7
8
9
10
11
#include "MyClass.h"
#include "Cook.h"
 
void MyClass::registerCook(Cook * cook)
{
_cook = cook;
}
void MyClass::method()
{
_cook->method()//вызво метода класса Сook
}
Добавлено через 2 минуты
ну и использовать так
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "MyClass.h"
#include "Cook.h"
 
Cook * cook = new Cook;
MyClass * my = new MyClass;
 
my->registerCook(cook);
 
my->method();
 
delete cook;
delete my;
Yandex
Объявления
26.11.2014, 16:27     Взаимодействие между классами
Ответ Создать тему
Опции темы

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