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

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

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

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

04.02.2012, 03:46. Просмотров 440. Ответов 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;
компилятор ругается на первый файл что не используемая метка, на второй что она не определна. Как быть?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2012, 03:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Обявление классов (C++):

Обявление шаблонного класса - C++
Как-то с пониманием С++ вроде уже все норм, осталась только одна тема немного темная - шаблоны, вроде бы и понимаю как они работают да и...

Функциия. Ее обявление. Файлы *.срр и *.h. Непонятна мне ошибка - C++
Доброго времени суток. После долгого перерыва вспоминаю основы С++. Дошел до функций. И столкнулся с такой проблемой. Что в...

почему обявление уровня доступа является нежелательным способом предявления доступа, в отличии от использования пространстрва имён? - C++
почему обявление уровня доступа является нежелательным способом предявления доступа, в отличии от использования пространстрва имён?

можно ли изменить имена объектов cin и cout? залесть в хедер (знаю, этого лучше не делать), и изменить обявление обектов? к примеру на chitai и pishi? - C++
можно ли изменить имена объектов cin и cout? залесть в хедер (знаю, этого лучше не делать), и изменить обявление обектов? к примеру на...

Разработать иерархию классов, демонстрирующее работу с коллекцией объектов разных классов - C++
Задание: Разработать в соответствии с индивидуальным заданием иерархию классов и приложение, демонстрирующее работу с коллекцией объектов...

Вынести методы из классов Panel и PictureBox (явная реализация методов базовых абстрактных классов) - C++
Тема: Множественное наследование. Явная реализация методов базовых абстрактных классов. Как вынести методы из классов Panel и...

3
igorrr37
1647 / 1275 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 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;
}
0
zss
Модератор
Эксперт С++
6404 / 5970 / 1945
Регистрация: 18.12.2011
Сообщений: 15,399
Завершенные тесты: 1
04.02.2012, 06:47 #3
По поводу goto.
Язык C++ имеет модульную архитектуру.
Каждый модуль (функция) описывается в каком-то одном файле.
Переходы goto выполняются в пределах модуля (т.е. нельзя перейти в другой модуль).
Если надо выполнить какой-то кусок кода из другого файла, то оформите его
в виде функции и вызывайте из любого места проекта.
1
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
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2012, 16:02
Привет! Вот еще темы с ответами:

Реализация отношения классов типа двунаправленная ассоциация, UML, порядок объявления классов, неполный класс - C++
Доброго времени суток! Осваивая UML, решил реализовать отношение двунаправленной ассоциации по диаграмме: У одного владельца...

Преобразования объектов классов в объекты других классов - C++
Задача типа обмен валют. Нужно конвертировать старый фунт стерлинг(фунт, шиллинг и пенсы) в доллары и обратно, по курсу 1 фунт = 50...

Наследование классов. Копирование производных классов - C++
Здравствуйте всем, у меня такой вопрос: написал код #include "stdafx.h" class A //Создаем класс А { int mA; ...

Множественное наследование, Перегрузка функций, Перегрузка операторов, Использование дружественных функций и классов, Использование шаблонов классов - C++
Здравствуйте!!! Я бы хотел попросить помоч решить...ну или скинуть примеры таких задач, если вдруг у вас они завалялись на компе или...


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

Или воспользуйтесь поиском по форуму:
4
Yandex
Объявления
04.02.2012, 16:02
Ответ Создать тему
Опции темы

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