我拥有的是:
#include "thread.h"
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
vector<Requester*> requesters; //global
struct Requester {
vector<thread> t;
vector<int> tracks;
};
然后在我的功能中我有:
void serviceQ(){
vector<Requester*> test = requesters; //error
}
错误是:
no suitable user-defined conversion from "std::vector<<error-type> *, std::allocator<<error-type> *>>" to "std::vector<Requester *, std::allocator<Requester *>>" exists
我很困惑为什么会这样。为什么它在函数中将我的全局变量称为错误类型?如果我要这样做:
void serviceQ(){
vector<Requester*> test;
//do some stuff
vector<Requester*> result = test; //no error
}
然后没有错误。
答案 0 :(得分:3)
您需要定义
vector<Requester*> requesters; //global
在struct Requester
的定义之后 ,否则编译器在尝试定义相应的Requester*
时不知道vector<Requester*>
的含义。或者,您可以声明
struct Requester;
在vector<Requester*> requesters;
行之上。