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

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

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

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

04.02.2012, 03:46. Просмотров 427. Ответов 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     Обявление классов
Посмотрите здесь:

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

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

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

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

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

наследование классов в C++ - C++
решил я с SDL поиграться.... ругается на 9 строчку компилятор, где ошибку допустил не подскажете?) main.cpp #include <iostream> ...

Наследование классов - C++
Собирал программу по частям, подскажите как исправить ошибки. #include <iostream> #include <conio.h> class Vehicle //...

наследование классов - C++
нужно создать программу состоящую из классов по принципу наследования то есть отец-сын-внук заранее спасибо!!

Объявления классов - C++
Класс может быть объявлен так: class MyClass { ... }; а может быть объявлен и так typedef class

Сложение классов - C++
Есть некоторые классы class A {/*...*/}; class B{/*...*/}; class C { A a; B b; }; Как перегрузить +, чтобы...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
1642 / 1270 / 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;
}
zss
Модератор
Эксперт С++
6288 / 5891 / 1910
Регистрация: 18.12.2011
Сообщений: 15,127
Завершенные тесты: 1
04.02.2012, 06:47     Обявление классов #3
По поводу goto.
Язык C++ имеет модульную архитектуру.
Каждый модуль (функция) описывается в каком-то одном файле.
Переходы goto выполняются в пределах модуля (т.е. нельзя перейти в другой модуль).
Если надо выполнить какой-то кусок кода из другого файла, то оформите его
в виде функции и вызывайте из любого места проекта.
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     Обявление классов
Ответ Создать тему
Опции темы

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