我现在正在为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中来包含它,或者因为我使用了向量的引用(修复了它,没有修复我的错误)。
答案 0 :(得分:3)
您未包含<vector>
标题。 :)
(从风格上讲,另一件事你做错了就是将using namespace std
放在头文件中。不要这样做。
答案 1 :(得分:3)
std::vector
不能专门用于参考类型。向量的元素需要是可分配的,而引用则不是。
最近的等效值可能是std::vector<std::reference_wrapper<Thread>>
,具体取决于是否适合您的设计。
答案 2 :(得分:1)
你错过了终结者;在您的类LuaThreadManager
的结束括号之后