在C ++中使用向量的奇怪模板错误

时间:2012-11-25 15:00:34

标签: c++ vector

我现在正在为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:语法错误:缺少';'在'&lt;'

之前

第12行:错误C4430:缺少类型说明符 - 假设为int。注意:C ++不支持default-int

第(12)行:错误C2238:';'

之前的意外标记

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

3 个答案:

答案 0 :(得分:3)

您未包含<vector>标题。 :)

(从风格上讲,另一件事你做错了就是将using namespace std放在头文件中。不要这样做。

答案 1 :(得分:3)

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

最近的等效值可能是std::vector<std::reference_wrapper<Thread>>,具体取决于是否适合您的设计。

答案 2 :(得分:1)

你错过了终结者;在您的类LuaThreadManager

的结束括号之后