-6

私は今、lua 用のマルチスレッド ライブラリを作成しています。この奇妙な問題がなければ、すべてがコンパイルされます。作成したスレッド オブジェクト クラスを保持するためのコンテナー オブジェクトがあります。このオブジェクトのヘッダーは次のとおりです。

 #include "stdafx.h"
    ;

using namespace std;
class LuaThreadManager {
public:  
    LuaThreadManager(int size);
    Thread& get(int id);
        int add(Thread& t);
void remove(int id);
protected: 
     vector <Thread&> T; 
     int numoccupied; 
}

コンパイルすると、このヘッダーから 3 つのエラーが発生します (これらはすべて、ヘッダーを宣言する行にあることに注意してください)。

12 行目: エラー C2143: 構文エラー: ';' がありません 「<」の前

12 行目: エラー C4430: 型指定子がありません - int と見なされます。注: C++ は default-int をサポートしていません

行 (12): エラー C2238: ';' の前に予期しないトークンがあります

そして、ここに私の質問があります: 私は一体何を間違っているのでしょうか? (また、ベクトル宣言に識別子 Thread が表示されます。これは私が作成したスレッド オブジェクトです) 編集: 私が与えられたすべての回答は機能していません。ベクトルライブラリを含めなかったからではありません(stdafx.h_に含めることで含めました、またはベクトルの参照を使用しているためです(修正しましたが、エラーを修正しませんでした)。

4

3 に答える 3

3

<vector>ヘッダーを含めていません。:)

(スタイル的には、あなたが間違っているもう1つのことはusing namespace std、ヘッダーファイルを挿入することです。そうしないでください)

于 2012-11-25T15:03:35.527 に答える
3

std::vector参照型に特化することはできません。ベクトルの要素は割り当て可能である必要がありますが、参照は割り当て可能ではありません。

std::vector<std::reference_wrapper<Thread>>設計に適しているかどうかに応じて、最も近い同等のものは かもしれません。

于 2012-11-25T15:38:08.860 に答える
1

あなたはターミネーターを逃しました; クラスLuaThreadManagerの閉じ中括弧の後

于 2012-11-25T15:26:05.870 に答える