2016-06-20 8 views
2

アトミック変数のテンプレート型としてユーザー定義関数へのポインタを持つことはできますか?ユーザー定義オブジェクトへのポインタのためのC++アトミック

方法1:あなたがメソッドを呼び出すには二つの方法持っているこの

class A 
{ 
int d; 
public: 
void foo() { cout<<"Hellow wolrd!"; } 
}; 

int main() 
{ 
atomic<A*> ptrA; 
//now how to call A::foo() from ptrA ? 

} 
+0

最初にAオブジェクトを持つ必要があります... –

+0

演算子はオーバーライドされているため、簡単に使用できます。(* ptrA).foo() – Omar

答えて

1

ような何か

(*ptrA).foo(); 

方法2

A* a = ptrA.load(); 

a->foo(); 

を私はあなたについて何も知りません多量の情報を提供していないような落とし穴を避ける最良の方法をアドバイスするためのマルチスレッドのシナリオですが、あなたは特定の結果に対して警戒することができます。 std::atomicloadメソッドは、さまざまなメモリ順序制約を受け入れることができます。

関連する問題