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

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

Восстановить пароль Регистрация
 
Satansoft
 Аватар для Satansoft
7 / 7 / 1
Регистрация: 27.02.2012
Сообщений: 694
26.11.2014, 01:50     Взаимодействие между классами #1
При попытке создать указатель на объект класса в public секции другого класса из которого будет обращение к его методу...

C++
1
Cook *cok
пишет, что Cook - не существующий тип...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11817 / 6796 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 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
С чаем беда...
Эксперт С++
 Аватар для TheCalligrapher
2787 / 1433 / 393
Регистрация: 18.10.2014
Сообщений: 2,637
26.11.2014, 04:16     Взаимодействие между классами #3
Цитата Сообщение от Satansoft Посмотреть сообщение
пишет, что Cook - не существующий тип...
Ну раз пишет - значит несуществующий. В языке С++ все надо объявлять перед использованием. Если вы не объявили типа 'Cook', то он будет "несуществующим".
Satansoft
 Аватар для Satansoft
7 / 7 / 1
Регистрация: 27.02.2012
Сообщений: 694
26.11.2014, 16:13  [ТС]     Взаимодействие между классами #4
То есть в разделе Public/Private/Protected объявить Class Cook, подключить *.h этого класса и можно обращаться к его методам? А указатель на класс не обязателен?
aLarman
636 / 557 / 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     Взаимодействие между классами
Ответ Создать тему
Опции темы

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