В C++, как я могу вызвать члена класса класса A из класса B с помощью указателя? Кстати, класс А и В имеют разные типы.Указание переменной на функцию-член из другого типа класса
Я читал, что, когда указатель указывает на функцию-член, он может только указывать функции-члены внутри класса. Но как я могу указать на функцию-член вне класса?
, например:
class A
{
public:
int add(int x)
{
return x+x;
}
};
int main()
{
typedef int (A::*pointer)();
pointer func = &A::add;
A objt;
B objt2;
obt2.*func(2);// the compiler give me an error of incompatible with object type ‘B’
return 0;
}
Try '(2)' –
@Chet: Это не решает тот факт, что вызов в 'функции члена Ā' на экземпляре 'B' является бессмысленным. – ildjarn
Независимо от того, какую проблему вы пытаетесь решить с помощью этой концепции, вероятно, легче решить и * лучше * использовать другой подход. В C++ методы и функции являются одними и теми же, в отличие от Smalltalk и других чистых языков OO. Перестройте свое решение, чтобы использовать практические функции языка, такие как наследование или какой-либо шаблон дизайна, который достигает вашего конца. Если вы разделяете свою фактическую цель, кто-то может предложить некоторые действительные подходы. –