2016-03-29 22 views
0

Ben ++ c yeniyim ve ben main.cpp, BM.h ve BM.cpp dosyalarına sahip ana class.I gelen BM sınıf yöntemini çağırmak için iplik kullanmak istediğiniz arama için hiçbir eşleme işleviKonu C++:

main.cpp benim programın bir kısmını

string id = res->getString("nct_id"); 
char txt[temp_size]; 
char pat[5]; 
BM bm ; 
thread Sam(&BM::search,&bm, txt, pat ,id); // use thread calls class method 

BM.h

void search(char *txt, char *pat , string id); 

BM.cpp

void BM::search(char *txt, char *pat ,string id) 

hata var:

No matching function for call to 
'std::thread::thread(void (BM::*)(char*, char*, std::string), BM*, char [(((sizetype)(((ssizetype)temp_size) + -1)) + 1)], char [5], std::string&)' 

beni

olmayan bir standart dil uzantısını kullanarak Bunun nedeni size

+0

'txt',' pat' ve 'id' ilanını sağlayın. – Zereges

cevap

2

teşekkür yardım lütfen, yani değişken uzunluktaki diziler (VLAS). Bu diziler şablonlarla iyi çalışmaz. Tüm karakter dizilerini ve tüm VLA'ları atlatmanız ve std: string ve std :: vektörünü kullanmanız önerilir.

Eğer bu basit geçici çözümü kullanamıyorsanız:

thread Sam(&BM::search,&bm, &txt[0], pat ,id);