我所拥有的是:

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


那就没有错误。

最佳答案

您需要定义

vector<Requester*> requesters; //global


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

struct Requester;


vector<Requester*> requesters;行上方。

10-07 19:22