Здравствуйте, Dmitry12345, Вы писали:
void f1(int i);
class a
{
};
class b
{
public:
void f2();
a m_a;
};
void f1(int i)
{
b obj;//Вряд ли это тот объект, для которого нужно вызвать f2
obj.f2();
}
Однако, вопрос о том, для какого именно объекта класса b нужно вызвать нестатическую функцию-член f2, остается открытым.
Привет всем, помогите пожалуйста разрешить проблему на C++. Спасибо всем!
void f1(int i) // callback функция, вызывается, когда приходит i
{
...
// как здесь вызвать b::f2() ???
};
class a
{
...
};
class b
{
public:
void f2() {...};
a m_a;
...
};
Здравствуйте, Dmitry12345, Вы писали:
D>Привет всем, помогите пожалуйста разрешить проблему на C++. Спасибо всем!
D>
D>void f1(int i) // callback функция, вызывается, когда приходит i
D>{
D>...
D>// как здесь вызвать b::f2() ???
D>};
D>
b::f2() ведь не статическая функция.
Для какого объекта класса b ты ее собираешься вызывать?
ммм... объявить функцию фрэндом для класса b?
аблин, гоню. проблема ж не в видимости. простите.
Обычно, если речь идет о коллбеках, то заводят некий контекст. Т.е. функция f1 выглядела бы так:
void f1( int i, void* pContext )
{
static_cast<b*>( pContext )->f2(); // например, так
}
void f1( int i, ContextPtr pContext )
{
pContext->GetB().f2(); // или как-то так
}
Здравствуйте, Dmitry12345, Вы писали:
D>Привет всем, помогите пожалуйста разрешить проблему на C++. Спасибо всем!
D>
D>void f1(int i) // callback функция, вызывается, когда приходит i
D>{
D>...
D>// как здесь вызвать b::f2() ???
D>};
D>class a
D>{
D>...
D>};
D>class b
D>{
D>public:
D> void f2() {...};
D> a m_a;
D>...
D>};
D>