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

Благодаря опережающему объявлению класса можно создать только УКАЗАТЕЛЬ на этот класс; так ли это? - C++

Восстановить пароль Регистрация
 
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,270
30.06.2011, 21:35     Благодаря опережающему объявлению класса можно создать только УКАЗАТЕЛЬ на этот класс; так ли это? #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
class B;
 
class A{
 A();
 ~A();
  B* b;
  //А вот так не компилится
  //B b_0;
};
 
class B {};
int main () {}
Просто недоумение у меня- куда уж логичнее: есть опережающее объявление, компилятор ищет конструктор, нашёл конструктор- конструирует объект. А так, от одного указателя сомнительное удовольствие. Лучше, чем ничего, но всё же.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2011, 21:35     Благодаря опережающему объявлению класса можно создать только УКАЗАТЕЛЬ на этот класс; так ли это?
Посмотрите здесь:

Написать класс, от которого можно получить только один экземпляр класса C++
сегодня наконец то понял что такое КЛАСС, и ОБЪЕКТ. понято всё, кроме одного - зачем всё это? в смысле, можно же без этого? так зачем жизнь усложнять? C++
Что значит константный указатель на объект, указатель на константный объект, и как это можно использовать? C++
C++ Друзья, подскажите, говорят, что можно поля класса инициализировать в момент объявления класса. Как это сделать?
Функция указатель на класс, определенный внутри шаблонного класса C++
C++ Указатель на класс как поле класса
Не создается указатель на класс внутри класса C++
Вызов метода производного класса через указатель на базовый класс C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
30.06.2011, 22:19     Благодаря опережающему объявлению класса можно создать только УКАЗАТЕЛЬ на этот класс; так ли это? #2
Благодаря опережающему объявлению класса можно создать только УКАЗАТЕЛЬ на этот класс; так ли это?
Да, это так.

Цитата Сообщение от kravam Посмотреть сообщение
Просто недоумение у меня- куда уж логичнее: есть опережающее объявление, компилятор ищет конструктор, нашёл конструктор- конструирует объект.
Дело не в конструкторе, а в том, что компилятору неизвестен размер объекта b_0 и он не может выделить для него память. А на этом этапе он уже должен это уметь. А описание класса B в этом файле и вовсе может отсутствовать.
Yandex
Объявления
30.06.2011, 22:19     Благодаря опережающему объявлению класса можно создать только УКАЗАТЕЛЬ на этот класс; так ли это?
Ответ Создать тему
Опции темы

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