-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; 
}

当我编译时,我从这个头文件中得到三个错误(我会注意到它们都在我声明我的头文件的那一行):

第 12 行:错误 C2143:语法错误:缺少 ';' 在'<'之前

第 12 行:错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数

第 (12) 行:错误 C2238:“;”之前的意外标记

这是我的问题:我到底做错了什么?(此外,您将在向量声明中看到标识符 Thread;它是我创建的线程对象) 编辑:我得到的所有答案都没有奏效。这不是因为我没有包含向量库(我确实通过将它包含在 stdafx.h_ 中来包含它,或者因为我使用了向量的引用(已修复,没有修复我的错误)。

4

3 回答 3

3

std::vector不能专门用于引用类型。向量的元素需要是可分配的,而引用不是。

最接近的等价物可能是 a std::vector<std::reference_wrapper<Thread>>,具体取决于它是否适合您的设计。

于 2012-11-25T15:38:08.860 回答
3

你不包括<vector>标题。:)

(从风格上讲,您做错的另一件事是放入using namespace std头文件。不要那样做)

于 2012-11-25T15:03:35.527 回答
1

你错过了终结者;在你的类 LuaThreadManager 的右大括号之后

于 2012-11-25T15:26:05.870 回答