複数のスレッドが同じオブジェクトへのポインターを共有している場合、その仮想メソッドを呼び出しても安全ですか?もちろん、メソッド自体はスレッドセーフであると想定する必要があります。
class Base {
public:
virtual int test(int arg) = 0;
};
class Derived1: public Base {
public:
virtual int test(int arg) { return arg * 2; }
};
class Derived2: public Base {
public:
virtual int test(int arg) { return arg * 3; }
};
//call in threads:
Base* base = (pointer to the same Derived1);
int value = base->test(1);