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

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

Войти
Регистрация
Восстановить пароль
 
OrmaJever
 Аватар для OrmaJever
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
#1

Обявление классов - C++

04.02.2012, 03:46. Просмотров 409. Ответов 3
Метки нет (Все метки)

Вобщем получалась такая ситуация, есть 2 класса
C++
1
2
3
4
5
6
7
8
class A {
 public:
  SomeMethod( B *param );
}
class B {
 public:
  SomeMethod( A *param );
}
Как указать первому классу что второй обьявлен? Написал перед классом А строку
C++
1
class B;
Скомпилировалось, но компилятору что-то не понравилось.
Код
warning: possible problem detected in invocation of delete operator:
warning: 'param' has incomplete type
warning: forward declaration of 'struct B'
note: neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined.
Внимание вопрос: Как исправить варнинги?
И ещё вопрос по меткам, в одном файле есть строка
C++
1
MY_GOTO:
в другом
C++
1
goto MY_GOTO;
компилятор ругается на первый файл что не используемая метка, на второй что она не определна. Как быть?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2012, 03:46     Обявление классов
Посмотрите здесь:

можно ли изменить имена объектов cin и cout? залесть в хедер (знаю, этого лучше не делать), и изменить обявление обектов? к примеру на chitai и pishi? C++
почему обявление уровня доступа является нежелательным способом предявления доступа, в отличии от использования пространстрва имён? C++
C++ Наследование классов
C++ Наследование Классов
Шаблоны классов C++
C++ Иерархия классов
C++ Обявление шаблонного класса
иерархия классов C++
наследование классов C++
C++ Разработка классов
C++ Наследование классов
Функциия. Ее обявление. Файлы *.срр и *.h. Непонятна мне ошибка C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
 Аватар для igorrr37
1600 / 1228 / 121
Регистрация: 21.12.2010
Сообщений: 1,875
Записей в блоге: 7
04.02.2012, 04:13     Обявление классов #2
1. Вроде так без warning'ов проходит
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class B;
 
class A
{
public:
    void SomeMethod( B *param ){};
};
 
class B
{
public:
    void SomeMethod( A *param ){};
};
 
int main()
{
    A a;
    B b;
    return 0;
}
zss
Модератор
Эксперт С++
 Аватар для zss
6115 / 5718 / 1849
Регистрация: 18.12.2011
Сообщений: 14,608
Завершенные тесты: 1
04.02.2012, 06:47     Обявление классов #3
По поводу goto.
Язык C++ имеет модульную архитектуру.
Каждый модуль (функция) описывается в каком-то одном файле.
Переходы goto выполняются в пределах модуля (т.е. нельзя перейти в другой модуль).
Если надо выполнить какой-то кусок кода из другого файла, то оформите его
в виде функции и вызывайте из любого места проекта.
OrmaJever
 Аватар для OrmaJever
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
04.02.2012, 16:02  [ТС]     Обявление классов #4
Цитата Сообщение от igorrr37 Посмотреть сообщение
1. Вроде так без warning'ов проходит
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class B;
 
class A
{
public:
    void SomeMethod( B *param ){};
};
 
class B
{
public:
    void SomeMethod( A *param ){};
};
 
int main()
{
    A a;
    B b;
    return 0;
}
хмм... Это часть проэкта qt, компилируется через makefile (компилятор mingw), и как я понимаю с флагом -Wall
Yandex
Объявления
04.02.2012, 16:02     Обявление классов
Ответ Создать тему
Опции темы

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