Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2002.04.25;
Скачать: [xml.tar.bz2];

Вниз

определить адрес процедуры из нее самой   Найти похожие ветки 

 
VuDZ   (2002-03-19 01:51) [14]

эт нето....
вот, вот такой пример, только смеяться не надо:

class A{
public:
A(int n){
m_nVal = n;
}
int foo(int);
int m_nVal;
void doo(){
printf("doo\n");
printf("m_nVal = %i\n", m_nVal);
}
};

int A::foo(int n){
printf("foo called\n");
printf("%i\n", n);
doo();
return 0;
}

class B{
public:
int i1, i2, i3, i4;
B(){
i1 = 1;
i2 = 0x2;
i3 = 0x3;
i4 = 0x4;
}

void bInit(){
i1 = 1;
i2 = 0x2;
i3 = 0x3;
i4 = 0x4;
}
double foo(){
printf("B::foo()\n");
printf("%i = i1\n", i1);
return 0.0;
}

void v(){
printf("B::v\n");
printf("%i = i2\n", i2);
}

void doo(){
printf("B::doo()\n");
printf("%i = i3\n", i3);
}

void doo2(){
printf("B::doo2()\n");
printf("%i = i4\n", i4);
}
};

class Stub{
};

int main(){
int k = 666;

B b = *reinterpret_cast<B*>(&k); // !!! from integer to class
b.bInit(); // only for variables initialization, nothing more

b.foo();
b.v();
b.doo();
b.doo2();

A n = (A)*(reinterpret_cast<A*>(&b));
n.A(1234);
n.doo();
n.foo(777);

printf("%i\n", k);
return getch();
}


PS из-за n.A(1234);, явного вызова конструктора, это соберут не все компиляторы, MS VC++ послал меня в пешее эротическое путешествие, так сильно это мотивируя, что захотело его стереть.

смысл, я думаю ясен - int -> B - > A, и всё работает, только вот переменный надо инициализировать, а то глюки могут быть. Хотя тут ничего особогои нет.

Для контроля- вывод:
B::foo()
1 = i1
B::v
2 = i2
B::doo()
3 = i3
B::doo2()
4 = i4
doo
m_nVal = 1234
foo called
777
doo
m_nVal = 1234
666

sya



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2002.04.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.008 c
14-81060
bos
2002-03-20 09:11
2002.04.25
минимальные требования IB6?


3-80735
ph
2002-04-03 12:01
2002.04.25
Сохранение изменений в бд.


3-80739
Студент
2002-04-05 13:19
2002.04.25
Кластеры в : что это такое?


4-81108
Vladimir Bolotin
2002-01-10 20:33
2002.04.25
прозрачность в win2k


3-80768
kserg@ukr.net
2002-04-04 13:12
2002.04.25
DbGridEh - не могу убить маркер сортировки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский