您使用pthreads很好,而且您在這裏沒有指向成員函數。
的問題是,你要使用非靜態成員變量作爲一個功能的默認參數,並you can't do that:
struct T {
int x;
void f(int y = x) {}
};
// Line 2: error: invalid use of non-static data member 'T::x'
// compilation terminated due to -Wfatal-errors.
默認參數必須是東西是—基本—一個全球,或至少一個不需要資格的名稱。
幸運的是,這是一個簡單的修復!
Class thread {
typedef void* (th_fun) (void*);
th_fun* tfun;
void create(th_fun* fun = NULL) { // perfectly valid default parameter
if (fun == NULL) {
fun = tfun; // works now because there's an object
} // context whilst we're inside `create`
pthread_create(&t, NULL, fun, NULL);
}
};
可能重複http://stackoverflow.com/questions/8079453/c-class-member-function-callback/8079610#8079610 – Yousf
不完全是......我需要存儲/修改。使用其他時間。 – rakesh
爲什麼不使用'boost :: thread'? –