M>Хочу добавить в него указатель на функцию, который будет устанавливаться в конструкторе и при вызове обращаться либо к func1 либо к func2
M>Как это можно сделать?
#include <iostream>
using namespace std;
class A {
public:
typedef void (A::*f)();
f selector;
void func1() {cout << "F1" << endl;}
void func2() {cout << "F2" << endl;}
void call_selector() { (this->*selector)();}
A(bool s) {
if (s == true)
selector = &A::func1;
else
selector = &A::func2;
}
};
int main() {
A f1(true);
A f2(false);
(f1.*(f1.selector))();
f1.call_selector();
(f2.*(f2.selector))();
f2.call_selector();
}
Здравствуйте, Mattias, Вы писали:
M>Есть класс
M>class A {
M>public:
M> A() {};
M>private:
M> void func1( int ) {};
M> void func2( int) {};
M>};
M>Хочу добавить в него указатель на функцию, который будет устанавливаться в конструкторе и при вызове обращаться либо к func1 либо к func2
M>То есть чтобы можно было из любой процедуры класса вызывать этот указатель (который является членом класса) а сам указатель устанавливать в конструкторе на соответствующую функцию.
M>Как это можно сделать?
Так что ли?
class A {
public:
A() {
m_ptr = &A::func1;
(this->*m_ptr)(5);
};
private:
void (A::*m_ptr)(int);
void func1( int );
void func2( int);
};
void A::func1( int ) {}
void A::func2( int) {}
Здравствуйте, Vamp, Вы писали:
M>>Хочу добавить в него указатель на функцию, который будет устанавливаться в конструкторе и при вызове обращаться либо к func1 либо к func2
M>>Как это можно сделать?
V>V>#include <iostream>
V>using namespace std;
V>class A {
V>public:
V>typedef void (A::*f)();
V>f selector;
V>void func1() {cout << "F1" << endl;}
V>void func2() {cout << "F2" << endl;}
V>void call_selector() { (this->*selector)();}
V>A(bool s) {
V> if (s == true)
V> selector = &A::func1;
V> else
V> selector = &A::func2;
V>}
V>};
V>int main() {
V> A f1(true);
V> A f2(false);
V> (f1.*(f1.selector))();
V> f1.call_selector();
V> (f2.*(f2.selector))();
V> f2.call_selector();
V>}
V>
Спасибо. Все заработало)