Visual Studio无法确定我的全局变量的类型

时间:2016-01-23 01:08:18

标签: c++ visual-studio

我拥有的是:

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

然后没有错误。

1 个答案:

答案 0 :(得分:3)

您需要定义

vector<Requester*> requesters; //global
struct Requester的定义之后

,否则编译器在尝试定义相应的Requester*时不知道vector<Requester*>的含义。或者,您可以声明

struct Requester;

vector<Requester*> requesters;行之上。