Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
PmAlex
5 / 5 / 2
Регистрация: 09.11.2013
Сообщений: 58
#1

Существует что-то наподобие внешней декларации типов? - C++

14.07.2014, 09:43. Просмотров 403. Ответов 13
Метки нет (Все метки)


http://www.cyberforum.ru/cpp-beginners/thread1194669.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2014, 09:43
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Существует что-то наподобие внешней декларации типов? (C++):

Что-то наподобие программы ping
только начал учится на c++ и вот такой вопрос, никак немогу написать программу...

Декларации
Подскажите пожалуйста, что такое "декларации"?

При компиляции сообщается, что в декларации два или больше типов
Создал библиотеку с функцией считывающей из файла данные в структуру. Первая...

Хранение значение разных типов в связном списке (наподобие ООП)
Я хочу написать оптимизированный интерпретатор брейнфака. Он сначала...

Что то наподобие пользовательских настроек
Есть форма, с выпадающими списками данные которых берутся из бд. Присутствует...

13
Croessmah
++Ͻ
14147 / 8072 / 1512
Регистрация: 27.09.2012
Сообщений: 19,907
Записей в блоге: 3
Завершенные тесты: 1
14.07.2014, 09:54 #2
header.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
#ifndef HEADER_H
#define HEADER_H
 
struct OtherType
{
   int data;
   OtherType() ;
};
 
void some_func(OtherType a);
 
#endif
в cpp реализацию
0
Ilot
Эксперт С++
1826 / 1184 / 342
Регистрация: 16.05.2013
Сообщений: 3,119
Записей в блоге: 5
Завершенные тесты: 1
14.07.2014, 09:56 #3
Возник ответ, а чем собственно деларация пользовательского типа отличается в вашей постановке от его предварительного объявления в стандарте с++?
Если я правильно понял вопрос то это называется предварительное объявление. А вот ключевое слово extern по большей части относится к объявлению переменных, либо же для экспорта шаблонов. Если последнее именно то что вас интересует то рекомендую почитать Вандервуда Шаблоны С++

Не по теме:

Croessmah, ну все теперь от вас с Тамикой не будет простой мыши никакого покоя

0
PmAlex
5 / 5 / 2
Регистрация: 09.11.2013
Сообщений: 58
14.07.2014, 09:58  [ТС] #4
Но у меня проблема в том, что данный тип OtherType объявлен в стороннем хидере - например "foo.h", да еще и внутри класса - то есть :

C++
1
2
3
4
5
6
7
8
9
class foo 
{
 
struct OtherType
{
 
int data;
}
}
0
Тамика
Котовчанин
918 / 462 / 195
Регистрация: 16.02.2010
Сообщений: 3,264
Записей в блоге: 28
14.07.2014, 10:01 #5
Цитата Сообщение от Ilot Посмотреть сообщение
Не по теме:
Croessmah, ну все теперь от вас с Тамикой не будет простой мыше никакого покоя

Не по теме:

Оп-оп, тут про меня разговорчики, смотрю. А вообще скажу так - , АХАХАХА

0
Ilot
Эксперт С++
1826 / 1184 / 342
Регистрация: 16.05.2013
Сообщений: 3,119
Записей в блоге: 5
Завершенные тесты: 1
14.07.2014, 10:01 #6
Если он в привате, то пользоваться им вам не дозволено... ООП таки, иначе:
C++
1
void some_func(foo::OtherType a);
0
Croessmah
14.07.2014, 10:03
  #7

Не по теме:

Цитата Сообщение от Ilot Посмотреть сообщение
Croessmah, ну все теперь от вас с Тамикой не будет простой мыши никакого покоя
мои лапы уже до тачпада добралися

0
PmAlex
5 / 5 / 2
Регистрация: 09.11.2013
Сообщений: 58
14.07.2014, 10:06  [ТС] #8
ну я только учусь) просто хотел каким-нибудь синтаксическим контекстом показать мысль, просто не знаю - существует ли что-то подобное (я по поводу extern ) для типов, думаю

Добавлено через 3 минуты
то есть предлагаете сделать предварительное объявление класса foo? при условии, что структура объявлена в в публичной части класса?
0
Ilot
Эксперт С++
1826 / 1184 / 342
Регистрация: 16.05.2013
Сообщений: 3,119
Записей в блоге: 5
Завершенные тесты: 1
14.07.2014, 10:08 #9
Цитата Сообщение от PmAlex Посмотреть сообщение
то есть предлагаете сделать предварительное объявление класса foo? при условии, что структура объявлена в в публичной части класса?
В вашем случае достаточно просто подключить хелдер.
0
PmAlex
5 / 5 / 2
Регистрация: 09.11.2013
Сообщений: 58
14.07.2014, 10:16  [ТС] #10
Всем спасибо большое! думаю, что тема закрыта
0
Voivoid
708 / 280 / 15
Регистрация: 31.03.2013
Сообщений: 1,339
14.07.2014, 11:06 #11
см. forward declaration
пример:

C++
1
2
3
4
5
#ifndef HEADER_H
#define HEADER_H
struct OtherType;
void some_func(OtherType a);
#endif

Не по теме:

А, про это оказывается уже написали

0
Tulosba
:)
Эксперт С++
4746 / 3240 / 496
Регистрация: 19.02.2013
Сообщений: 9,046
14.07.2014, 14:19 #12
Цитата Сообщение от Voivoid Посмотреть сообщение
см. forward declaration
Для передачи по значению это не актуально.
0
Voivoid
708 / 280 / 15
Регистрация: 31.03.2013
Сообщений: 1,339
14.07.2014, 15:33 #13
Цитата Сообщение от Tulosba Посмотреть сообщение
Для передачи по значению это не актуально.
В каком смысле не актуально? forward declaration и для аргументов ( и для результата функции ) передающихся по значению можно использовать. Понятное дело, что уже в файле с реализаций должно быть доступно соответствующее определение
1
Tulosba
:)
Эксперт С++
4746 / 3240 / 496
Регистрация: 19.02.2013
Сообщений: 9,046
14.07.2014, 15:40 #14
Цитата Сообщение от Voivoid Посмотреть сообщение
forward declaration и для аргументов ( и для результата функции ) передающихся по значению можно использовать.
Согласен. Просто я почему-то рассматривал такой вариант с телом функции:
C++
1
2
3
4
class C;
void f(C* c) {} // сработает
void g(C c) {} // не сработает
class C {};
0
14.07.2014, 15:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.07.2014, 15:40
Привет! Вот еще темы с решениями:

Существует явное преобразование (возможно, пропущено приведение типов)
Добрый день. Помогите, пожалуйста, исправить ошибку. Не пойму как сделать по...

Реализация что-то наподобие потоков в php
Здравствуйте, есть массив объектов класса Кот, нужно выводить на экран...

Хочу сделать что-то наподобие Агарио
Скажите как сделать так чтобы когда шар (персонаж) дотрагиваался до точки...

Метод, обратный DrawImage или что то наподобие
Всем привет! Подскажите пожалуйста, каким образом можно убрать изображение,...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

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