FreeBasic
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.

Объявление типа

Участников: 2

Перейти вниз

Объявление типа Empty Объявление типа

Сообщение  DiG. GeRR Пт Авг 28, 2009 4:17 pm

Мне нужно создать два класа (хотя, это, конечно, не совсем класс...), причем в первом классе содержится указатель на объект второго класса, а во втором объекте - указатель на объект первого класса. Естественно, что подобная конструкция не компилится (так как второй класс во время определения первого еще не определен). Можно как-нибудь определить объект до его "implementation"? Что-то вроде этого:

Код:

class cl2;

class cl1
{
   cl2* ptr;
};

class cl2
{
   cl1* ptr;
};

Или все же придется определять в одном из классов any ptr?

DiG. GeRR

Сообщения : 101
Дата регистрации : 2009-01-30
Возраст : 32
Откуда : Рудный, Казахстан

Вернуться к началу Перейти вниз

Объявление типа Empty Re: Объявление типа

Сообщение  Eric-S Пт Авг 28, 2009 8:19 pm

В C++ есть такая возможность.
Сообщить компилятору, что такой-то класс будет определён позже.
Но тут... Не знаю. Сейчас посмотрю.
Мне приходилось делать any ptr.

Eric-S

Сообщения : 738
Дата регистрации : 2008-08-06
Возраст : 40
Откуда : Россия, Санкт-Петербург

http://eric50.narod.ru

Вернуться к началу Перейти вниз

Объявление типа Empty Re: Объявление типа

Сообщение  Eric-S Пт Авг 28, 2009 8:36 pm

Ха-эм. Если я правильно понял, то можно объявить временный тип, который можно потом будет уже переопределить.

Если это не так, напишите.

А если моё предположение верно, то хотелось бы узнать подробности на русском языке!
Буду ждать!

Eric-S

Сообщения : 738
Дата регистрации : 2008-08-06
Возраст : 40
Откуда : Россия, Санкт-Петербург

http://eric50.narod.ru

Вернуться к началу Перейти вниз

Объявление типа Empty Re: Объявление типа

Сообщение  DiG. GeRR Сб Авг 29, 2009 8:01 pm

Интересная фича. Не знал про нее, честно говоря. Но в моем случае это не подходит, а вот что я нашел:

Type (Alias)
Declares an alternative name for a type

Syntax
Type typename As symbol

Parameters
typename - new alternative name.
symbol - symbol or data type declaration to associate with typename.

Description
symbol may refer to any declared data type including a built-in data type, Sub or Function pointer, Type declaration, Union declaration, or Enum declaration.
A type alias can be used to allow forward declarations of User Defined Types.

короче можно написать так:

Код:
type tp2_forw as tp2

type tp1
      as tp2_forw ptr pointr
end type

type tp2
    as tp1 ptr pointr
end type


Если это не так, напишите.
Вообще-то можно и без "вы". Намек понят?

DiG. GeRR

Сообщения : 101
Дата регистрации : 2009-01-30
Возраст : 32
Откуда : Рудный, Казахстан

Вернуться к началу Перейти вниз

Объявление типа Empty Re: Объявление типа

Сообщение  Eric-S Сб Авг 29, 2009 8:14 pm

Набивая слово "вы" я имел в виду множественное число "вы люди" (вы все те кто читаете сообщение).

А твой последний пример, как понимаю реально рабочий?

Я видел, но не пошол его смотреть. Думал какой-то изврат, с именованиме для компилера.

А что же тогда делает временный тип?

Eric-S

Сообщения : 738
Дата регистрации : 2008-08-06
Возраст : 40
Откуда : Россия, Санкт-Петербург

http://eric50.narod.ru

Вернуться к началу Перейти вниз

Объявление типа Empty Re: Объявление типа

Сообщение  DiG. GeRR Сб Авг 29, 2009 8:51 pm

Набивая слово "вы" я имел в виду множественное число "вы люди" (вы все те кто читаете сообщение).

О, великий, могучий и многозначный!!! Smile Smile Smile Smile


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

mtype tp = {10, 10, 10}
my_func_that_gets_mtype(mtype)

а просто my_func_that_gets_mtype(type(10, 10, 10))

ну и некоторые другие применения...



а, вот: в С есть такой код:


Код:
myclass my_func_that_returns_myclass()
{
    return myclass(0, 0, 0);
}

а в фб

Код:
function my_func_that_returns_mytype() as mytype
    return type<mytype>(0, 0, 0)
end function

DiG. GeRR

Сообщения : 101
Дата регистрации : 2009-01-30
Возраст : 32
Откуда : Рудный, Казахстан

Вернуться к началу Перейти вниз

Объявление типа Empty Re: Объявление типа

Сообщение  Eric-S Сб Авг 29, 2009 10:05 pm

Занятно...

А type aleas значит что-то типа deftype из C++&

Кажеться очень похоже.

Eric-S

Сообщения : 738
Дата регистрации : 2008-08-06
Возраст : 40
Откуда : Россия, Санкт-Петербург

http://eric50.narod.ru

Вернуться к началу Перейти вниз

Вернуться к началу

- Похожие темы

 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения