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

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

Восстановить пароль Регистрация
 
OrmaJever
 Аватар для OrmaJever
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
04.02.2012, 03:46     Обявление классов #1
Вобщем получалась такая ситуация, есть 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     Обявление классов
Посмотрите здесь:

C++ Преобразования объектов классов в объекты других классов
можно ли изменить имена объектов cin и cout? залесть в хедер (знаю, этого лучше не делать), и изменить обявление обектов? к примеру на chitai и pishi? C++
почему обявление уровня доступа является нежелательным способом предявления доступа, в отличии от использования пространстрва имён? C++
Шаблоны классов C++
C++ Иерархия классов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 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
5953 / 5558 / 1787
Регистрация: 18.12.2011
Сообщений: 14,204
Завершенные тесты: 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     Обявление классов
Ответ Создать тему
Опции темы

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