2011-12-24 28 views
0

2番目の代わりに最初の関数が機能しない理由はわかりません!C++クラスの静的宣言

#include <boost/bind.hpp> 
#include <boost/function.hpp> 

#include "concurrentQueue.h"; 
class TestClass { 
    public:    
       static concurrentQueue<function<void()>> notW; 

       static concurrentQueue<int> Works; 
} 

私もconcurrentQueueクラスの先頭に付ける:

template<class Data> class concurrentQueue 
+0

エラーメッセージは何ですか? – Mat

+0

私が知っていれば、スレッドを開かなかったでしょう。 – rodi

+0

私はあなたを責めません。私はあなたの質問を落とした人ではありませんでした。私は答えも知らなかった。ここでは重複を最小限に抑えるのがよいでしょう。既存の質問は、それを見つけるのに十分なほど難しいです。 –

答えて

2

は右シフト演算子として扱われているからそれを防ぐために>>内のスペースを入れてください:

static concurrentQueue<function<void()> > notW; 

コンパイラは、可能であれば、テンプレート引数リストを閉じると山括弧を解釈するため、C++ 11コンパイラではこれは必要ありません。

+0

C++ 11以降のスペースは許されません。 –

+0

@WTP:C++ 99とは何ですか? – interjay

+0

私はC++ 11を意味しました。私はC99に混乱しています。 –

2

C++ 03以前の2つの角括弧の間にスペースが必要です。これは新しい2011年の基準で「修正」されています。

詳細については、たとえばthis questionを参照してください。

関連する問題