void *p_global; //У меня есть глобальный указатель
p_global = 0; //он не на что не указывает
class myclass{
public:
void *p; //Есть указатель внутри класса
void getp(void *data){p = data;}
void return_myself();
}
myclass *abc = new(myclass);
abc->getp(&p_global);//думаю, здесь я получил указатель на указатель
//нужно, чтобы p_global указывал на abc
((myclass*)p_globall) == abc
void myclass::return_myself(){
p = this; // - как это сделать внутри класса через p???
}
Здравствуйте, Idler, Вы писали:
I>I>void *p_global; //У меня есть глобальный указатель
I>p_global = 0; //он не на что не указывает
I>class myclass{
I>public:
I> void *p; //Есть указатель внутри класса
I> void getp(void *data){p = data;} //почему getp, судя по семантике надо setp
I>
void return_myself();
I> }
I>
myclass *abc = new myclass(); //лучше так, без скобок в конце получишь default initialization. см. стандарт
abc->getp(&p_global);
//думаю, здесь я получил указатель на указатель
I>
//нужно, чтобы p_global указывал на abc
I>
p_globall = abc; //можно без приведения типов
I>
void myclass::return_myself(){
I>
p = this; // - как это сделать внутри класса через p??? //что ты хочешь сделать, объясни русским языком
I> }
I>
и почему C#-форматирвоание? есть же ccode?
Здравствуйте, Константин Л., Вы писали:
I>> void getp(void *data){p = data;} //почему getp, судя по семантике надо setp
С названиями я напутал
I>>myclass *abc = new myclass(); //лучше так, без скобок в конце получишь default initialization
здесь тоже, быстро писал
I>>[b]p_globall = abc; //можно без приведения типов
if(p_globall == abc) //нужно, чтобы p_global указывал на abc
хорошо();
I>>void myclass::return_myself(){
I>> p = this; // - как это сделать внутри класса через p??? //что ты хочешь сделать, объясни русским языком
чтобы p_global указывал на abc
*p = this; //компилятор ругается Not allowed type
*p = (void *)this; //тоже
(void *)*p = (void *)this; //тоже
Здравствуйте, Idler, Вы писали:
I>I>void *p_global; //У меня есть глобальный указатель
I>p_global = 0; //он не на что не указывает
I>class myclass{
I>public:
I> void **p; //Есть указатель на указатель внутри класса
I>
void getp(
void **data){p = data;}
I>
void return_myself();
I> }
I>myclass *abc =
new(myclass);
abc->>getp(&p_global);
//думаю, здесь я получил указатель на указатель
I>
//нужно, чтобы p_global указывал на abc
I>((myclass*)p_globall) == abc
I>
void myclass::return_myself(){
I> *p =
this;
// - как это сделать внутри класса через p???
I> }
I>
я слабо понял, что ты имел ввиду, может так:
#include <iostream.h>
class myclass;
myclass *p_global = 0; //У меня есть глобальный указатель, он не на что не указывает
class myclass
{
public:
myclass **p; //Есть указатель внутри класса
void getp(myclass **data)
{
p = data;
}
void return_myself()
{
*p = this; // - как это сделать внутри класса через p???
}
void test(){std::cout<<"Test!"<<std::endl;}
};
int main()
{
myclass *abc = new(myclass);
abc->getp(&p_global);//думаю, здесь я получил указатель на указатель
//нужно, чтобы p_global указывал на abc
p_global = abc;
// проверка :)
p_global->p[0]->test();
return 0;
}
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>