嗨,我有一個載體,一個結構的並行線程參數傳遞如下:向量的結構不會讓我的push_back
struct thread_data{
vector< pair < Database, string> > list_databases;
...
...
};
...some more code...
然後在後面的功能,當我做了以下 (MYDATA是thread_data傳遞進入功能) (條目是一對<數據庫,字符串>)
mydata->list_databases.push_back(entry);
每當我做到這一點告訴我的push_back非類類型。我不明白這個錯誤。
vector< pair<Database,string> > * list_databases;
和
mydata->list_databases->push_back(entry);
以及兩者的組合:用我也嘗試過。所有給我同樣的錯誤。任何人都可以提出建議我已經研究過這個問題,並且已經停留了好幾個小時。謝謝
編輯:
這裏是代碼的其餘部分:
#include<iostream>
#include<pthread.h>
#include<vector>
#include<string>
#include<fstream>
using namespace std;
struct thread_data{
vector< pair<Database, string> >* list_databases;
const char* store;
}
void* load_store(void* threadarg);
int main(){
vector< pair <Database, string> > list;
pthread_t thread1;
string test;
cout <<"$ ";
cin >> test;
const char* store_name = test.c_str();
struct thread_data tester;
tester.store = store_name;
tester.list_databases = &list;
pthread_create(&thread1,NULL,load_store, (void*) &tester);
return 0;
}
void * load_store(void* threadarg){
struct thread_data *mydata;
mydata = (struct thread_data*) threadarg;
string store_used = mydata->store;
ifstream load;
string conversion;
Database Loader;
load.open(store_used.c_str());
if(!load){ cerr << "Does not exist" << endl;
exit(1);
}
while(!load.eof()){
//...pushes file contents into database Loader...
}
load.close();
pair < Database, string > new_store(Loader, store);
mydata->list_databases->push_back(new_store); // this is where the error occurs
return 0;
}
請從包含'thread_data'的文件中發佈代碼的相關聲明,包括'#includes','using'語句等。 – birryree
我發佈了其餘的相關代碼 – aport002