Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> типы перемннных 2 
:(
    Опции темы
MsLive
  Дата 6.10.2008, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 1.4.2008

Репутация: нет
Всего: нет



Здравствуйте!
Недавно возник такой вопрос:
Как мне включить класс в проект, который использует неопределенный
тип данных(и таких данных много)
например:
Код

class main_memory
{

U_graphics graphics;
................
...............
};

в другом файле
Код

class U_graphics: public D3d_misc_app
{
rdv use_device
int current_device;
.......................
...................
};

Любая попытка включить этот класс без #include не была успешной(компилятор писал ошибку связанную с неизвестным типом)  smile 
З.Ы. Если предполагать что компьютер не знает как с ними работать, тогда почему бы  не писать
ошибку когда я именно использую неизвестный тип, а не получаю доступ к известному классу с известном типом- и даже не к внутреннему классу этого класса(потомку)? smile 
Заранее спасибо!
PM MAIL   Вверх
Lazin
Дата 6.10.2008, 18:38 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 27
Всего: 154



ты бы книжку почитал сначала, хотя-бы по Си...
PM MAIL Skype GTalk   Вверх
MsLive
Дата 6.10.2008, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 1.4.2008

Репутация: нет
Всего: нет



Цитата

ты бы книжку почитал сначала, хотя-бы по Си...

Что вы имеете ввиду?
PM MAIL   Вверх
J0ker
Дата 6.10.2008, 19:30 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 9
Всего: 14



Цитата(MsLive @ 6.10.2008,  19:23)
Цитата

ты бы книжку почитал сначала, хотя-бы по Си...

Что вы имеете ввиду?

 smile

Это сообщение отредактировал(а) J0ker - 6.10.2008, 19:30


--------------------
user posted image
PM MAIL   Вверх
MsLive
Дата 6.10.2008, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 1.4.2008

Репутация: нет
Всего: нет



Цитата(J0ker @ 6.10.2008,  19:30)
Цитата(MsLive @ 6.10.2008,  19:23)
Цитата

ты бы книжку почитал сначала, хотя-бы по Си...

Что вы имеете ввиду?

 smile

 smile 
PM MAIL   Вверх
Fazil6
Дата 6.10.2008, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 7
Всего: 60



Цитата(MsLive @  6.10.2008,  18:19 Найти цитируемый пост)
Любая попытка включить этот класс без #include не была успешной(компилятор писал ошибку связанную с неизвестным типом)   З.Ы. Если предполагать что компьютер не знает как с ними работать, тогда почему бы  не писатьошибку когда я именно использую неизвестный тип, а не получаю доступ к известному классу с известном типом- и даже не к внутреннему классу этого класса(потомку)?  Заранее спасибо!

потому что Гладиолус (стыдно этого незнать).

PM MAIL   Вверх
Lin07
Дата 6.10.2008, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 19.7.2008

Репутация: -1
Всего: -1



Цитата(MsLive @ 6.10.2008,  19:23)
Цитата

ты бы книжку почитал сначала, хотя-бы по Си...

Что вы имеете ввиду?

потому что компилятор не знает ,что за обьект ,если вы ему о нем не расскажете...  smile 

как он может знать что это такое ,если вы ему о обьекте не слова не говорите smile 

J0ker +1

Это сообщение отредактировал(а) Lin07 - 6.10.2008, 23:55
PM MAIL   Вверх
Lazin
Дата 7.10.2008, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 27
Всего: 154



Цитата(Lin07 @  6.10.2008,  23:54 Найти цитируемый пост)
потому что компилятор не знает ,что за обьект ,если вы ему о нем не расскажете...  smile 

как он может знать что это такое ,если вы ему о обьекте не слова не говорите

он (компилятор) проиндексирует жесткий диск компьютера smile

Добавлено через 42 секунды
и найдет нужный заголовочный файл, где-бы он не был 
PM MAIL Skype GTalk   Вверх
tier2
Дата 7.10.2008, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 6.10.2008

Репутация: нет
Всего: нет



Цитата(Lazin @ 7.10.2008,  07:58)
Цитата(Lin07 @  6.10.2008,  23:54 Найти цитируемый пост)
потому что компилятор не знает ,что за обьект ,если вы ему о нем не расскажете...  smile 

как он может знать что это такое ,если вы ему о обьекте не слова не говорите

он (компилятор) проиндексирует жесткий диск компьютера smile

Добавлено @ 07:58
и найдет нужный заголовочный файл, где-бы он не был

 smile 
PM MAIL   Вверх
MsLive
Дата 7.10.2008, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 1.4.2008

Репутация: нет
Всего: нет



Цитата

потому что компилятор не знает ,что за обьект ,если вы ему о нем не расскажете...   
как он может знать что это такое ,если вы ему о обьекте не слова не говорите

Так об этом я и говорил:
Если я обращаюсь к неизвестному объекту- то писать ошибку, а если не обращаюсь- не писать.
Или это как-то связанно с адресом памяти в классе?
И почему даже если в классе есть указатель с неопределенным типом то я тоже должен это обозначивать?
PM MAIL   Вверх
bsa
Дата 7.10.2008, 11:20 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(MsLive @ 7.10.2008,  10:41)
И почему даже если в классе есть указатель с неопределенным типом то я тоже должен это обозначивать?

Потому что компилятор не знает, что ты пытаешься сделать. Может это у тебя не тип, а объект, функция, переменная... Что делать то?!? Он не знает. Вот и ругается.
Если тебе нужен указатель или ссылка на объект неизвестного типа, то ты должен сделать предопределение этого типа:
Код
class MyClass;
MyClass *pointer;

Программа во время исполнения не может ругаться на доступ к неизвестному объекту, так как во время ее работы нет понятия типа объекта. Это особенность компилируемых языков (к коим относятся Си и С++), если тебе нужны подобные свойства, то обрати внимание на интерпретируемые (BASIC, Python и пр.)
PM   Вверх
MsLive
Дата 7.10.2008, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 1.4.2008

Репутация: нет
Всего: нет



Цитата

Программа во время исполнения не может ругаться на доступ к неизвестному объекту, так как во время ее работы нет понятия типа объекта. Это особенность компилируемых языков (к коим относятся Си и С++), если тебе нужны подобные свойства, то обрати внимание на интерпретируемые (BASIC, Python и пр.) 

Я имею ввиду не во время работы,- а во время компиляции проекта.
Цитата

Потому что компилятор не знает, что ты пытаешься сделать. Может это у тебя не тип, а объект, функция, переменная... Что делать то?!? Он не знает. Вот и ругается.
Если тебе нужен указатель или ссылка на объект неизвестного типа, то ты должен сделать предопределение этого типа:

Если исполняемая функция\класс\объект\структура вызывается то компилятор проверяет наличие обозначения данной переменной в исполняемом классе\файле если ее там нет(в исполняемом файле нет #include, обозначения класса: class temp_obj)- пишет ошибку. И не важно что это функция,класс- компилятор будет понимать: если он вызывает неопознанную инструкцию, он будет давать об этом отсчет (ошибка) (во время компиляции)
З.ы. "Что делать то?!? Он не знает. Вот и ругается" - ругаться положено не по пустякам т.е. когда я этот объект вызываю- он дает об этом отсчет, а если не вызываю он дальше компилирует проект.

PM MAIL   Вверх
Lazin
Дата 7.10.2008, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 27
Всего: 154



во время компиляции исполняемого файла еще нет, он появится только после успешной компоновки, include - директива, которая говорит компилятору, что нужно вставить текст одного файла в другой.
зы
RTFM, лучше начни с основ, а то путать исходник с исполняемым файлом как-то совсем грустно...
PM MAIL Skype GTalk   Вверх
MsLive
Дата 7.10.2008, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 1.4.2008

Репутация: нет
Всего: нет



Цитата

путать исходник с исполняемым файлом как-то совсем грустно... 

Про исполняемый файл я разве говорил?


Это сообщение отредактировал(а) MsLive - 7.10.2008, 13:56
PM MAIL   Вверх
Lazin
Дата 7.10.2008, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 27
Всего: 154



Цитата(MsLive @  7.10.2008,  13:11 Найти цитируемый пост)
в исполняемом файле нет #include


Цитата(MsLive @  7.10.2008,  13:11 Найти цитируемый пост)
Если исполняемая функция\класс\объект\структура вызывается то компилятор проверяет наличие обозначения данной переменной в исполняемом классе\файле если ее там нет


говорил
PM MAIL Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1238 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.