Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 08:02 13.07.25 
Клубове/ Компютри и Интернет / Програмисти Пълен преглед*
Информация за клуба
Тема Re: я като си зачекал темата [re: zaphod]
Автор void* (психопат)
Публикувано23.05.05 20:32  



абе не знам точно какво се опитваш да направиш, но ако C++ те спъва чак толкова най-вероятно си сбъркал нещо още в дизайна.

имай предвид, че указателят към член не е прост указател в общия случай. т.е. не е адрес в паметта, с който да работи процесорът, а някаква структура. затова кастовете с какива типове са ограничени. също както не можеш да кастнеш някакъв обект към int например.

A a;
int i = reinterpret_cast<int>(a); // грешка


за този клас например

class A
{
public:
int func1(int, char*) { return 0; }
void func2(float) { return; }
static int func3() { return 42; }

double d;
};

този код

std::cout << sizeof( int (A::*)(int, char*) ) << std::endl;
std::cout << sizeof( double A::* ) << std::endl;
std::cout << sizeof( char* ) << std::endl;

отпечатва това:

8
4
4

в g++.

в т. 5.2.10 на Стандарта пише:

9 An rvalue of type ``pointer to member of X of type T1'' can be explicitly converted to an rvalue of type ``pointer to member of Y of type T2'' if T1 and T2 are both function types or both object types.66) The null member pointer value (4.11) is converted to the null member pointer value of the destination type. The result of this conversion is unspecified, except in the following cases:

- converting an rvalue of type ``pointer to member function'' to a different pointer to member function type and back to its original type yields the original pointer to member value.

- converting an rvalue of type ``pointer to data member of X of type T1'' to the type ``pointer to data mem ber of Y of type T2'' (where the alignment requirements of T2 are no stricter than those of T1) and back to its original type yields the original pointer to member value.

т.е. ако просто искаш да можеш да пазиш адресите и после сам да си ги кастваш към правилния тип, можеш да направиш нещо такова:

class dummy_class
{
public:
void dummy_func() {}
};

typedef void (dummy_class::*member_pointer_t)();


после някъде можеш да направиш

member_pointer_t qq;
qq = reinterpret_cast<member_pointer_t>(&A::func1);

запазваш си някъде qq, и по някое време като ти потрябва го кастваш обратно към правилния тип

нещо_си = reinterpret_cast<int (A::*)(int, char*)>(saved_qq);


ако можеш дай по-конкретен пример за това, което искаш да направиш и ще видя дали ще се сетя нещо.

unsigned


Цялата тема
ТемаАвторПубликувано
* я пробвайте да компилирате това: zaphod   20.05.05 12:04
. * Я пак, че не разбрах нещо Colombino   20.05.05 13:11
. * Re: Я пак, че не разбрах нещо Pekoнcтpykтop   20.05.05 15:42
. * Не точно Colombino   20.05.05 16:01
. * Re: Не точно Dorian_Gray   20.05.05 16:49
. * Именно, де Colombino   20.05.05 17:00
. * "членове с деструктори"-ебааа!!! focusnik   20.05.05 17:27
. * Re: Я пак, че не разбрах нещо void*   20.05.05 17:15
. * Другари! BjarneStroustrup®   21.05.05 10:07
. * Re: Другари! Colombino   21.05.05 12:26
. * Re: Другари! BjarneStroustrup®   21.05.05 12:48
. * Re: Другари! Colombino   21.05.05 13:15
. * Re: Другари! void*   22.05.05 02:05
. * Тва на мен ли го казваш?!? Colombino   22.05.05 14:39
. * Re: Тва на мен ли го казваш?!? void*   22.05.05 20:07
. * Re: Тва на мен ли го казваш?!? BjarneStroustrup®   25.05.05 12:32
. * Не вярвам Colombino   25.05.05 15:45
. * Re: Не вярвам BjarneStroustrup®   25.05.05 16:35
. * Re: Тва на мен ли го казваш?!? void*   25.05.05 16:24
. * Re: Тва на мен ли го казваш?!? BjarneStroustrup®   25.05.05 16:37
. * Re: Другари! xyz   21.05.05 16:46
. * Re: Другари! Colombino   21.05.05 20:12
. * Re: Другари! zaphod   21.05.05 20:40
. * Re: Другари! Colombino   21.05.05 21:00
. * Re: Другари! xyz   21.05.05 21:39
. * Re: Другари! zaphod   21.05.05 23:30
. * Re: Другари! xyz   22.05.05 01:33
. * Re: Другари! zaphod   22.05.05 09:02
. * Re: Другари! xyz   22.05.05 23:20
. * Бъди джигит! Colombino   22.05.05 23:40
. * Re: Бъди джигит! xyz   23.05.05 13:14
. * бе това на къв компилатор zaphod   23.05.05 14:35
. * Re: бе това на къв компилатор Colombino   23.05.05 14:55
. * оправих го zaphod   23.05.05 15:03
. * я като си зачекал темата zaphod   23.05.05 13:37
. * Баси извратения синтаксис! Colombino   23.05.05 16:20
. * Re: Баси извратения синтаксис! zaphod   23.05.05 17:49
. * Re: я като си зачекал темата void*   23.05.05 20:32
. * Re: я като си зачекал темата zaphod   23.05.05 21:48
. * IDispatch ~!@$%amp;^*()_+   23.05.05 22:54
. * Re: IDispatch zaphod   24.05.05 08:33
. * Re: IDispatch ~!@$%amp;^*()_+   24.05.05 10:02
. * Re: я като си зачекал темата void*   24.05.05 03:27
. * Re: я като си зачекал темата zaphod   24.05.05 08:22
. * Re: я като си зачекал темата void*   24.05.05 14:06
. * тоя метод за викане на конструктор zaphod   23.05.05 14:26
. * Не бачка?!? Colombino   23.05.05 14:33
. * Re: Не бачка?!? zaphod   23.05.05 14:53
. * ами очаквах zaphod   20.05.05 16:18
. * Я пак помисли Colombino   20.05.05 16:48
. * Re: ами очаквах void*   20.05.05 17:19
. * Re: ами очаквах Colombino   20.05.05 17:25
. * Re: ами очаквах void*   20.05.05 18:14
. * Re: ами очаквах Colombino   20.05.05 18:23
. * Re: ами очаквах void*   20.05.05 18:29
. * Ми не знам Colombino   20.05.05 18:37
. * Re: Ми не знам focusnik   20.05.05 18:43
. * Re: Ми не знам void*   20.05.05 19:11
. * Не съм съгласен, мистерията остава Colombino   20.05.05 20:01
. * Re: Не съм съгласен, мистерията остава void*   20.05.05 20:28
. * ето и окончателния отговор void*   22.05.05 03:12
. * Re: ето и окончателния отговор явepтъ   24.05.05 02:31
. * Re: Не съм съгласен, мистерията остава zaphod   20.05.05 22:35
. * Re: Не съм съгласен, мистерията остава void*   21.05.05 00:56
. * ц++ има адски много кусури ~!@$%amp;^*()_+   21.05.05 02:04
. * Re: ц++ има адски много кусури void*   21.05.05 12:01
. * Re: Не съм съгласен, мистерията остава zaphod   21.05.05 07:56
. * Re: Не съм съгласен, мистерията остава BjarneStroustrup®   21.05.05 11:14
. * Подкрепям Colombino   21.05.05 12:32
. * Re: Подкрепям BjarneStroustrup®   21.05.05 12:50
. * Re: я пробвайте да компилирате това: Чвopko   20.05.05 13:38
. * Re: я пробвайте да компилирате това: Пeтpocян   20.05.05 13:40
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2025 Dir.bg Всички права запазени.