pthread sınıfından fonksiyon
Hadi böyle bir sınıf var diyelim
class c {
// ...
void *print(void *){ cout << "Hello"; }
}
Ve sonra c vektörü var
vector<c> classes; pthread_t t1;
classes.push_back(c());
classes.push_back(c());
Şimdi, c.print();
bir iş parçacığı oluşturmak istiyorum
Ve beni takip sorunu aşağıda veriyor: pthread_create(&t1, NULL, &c[0].print, NULL);
Hata Çıkışı: ‘void* (tree_item::)(void) ’ ‘*void ()(void)’ argümanı ‘3’ ‘pthread_create(pthread_t*, int için pthread_attr_t*, ( . void* ^em>)(void), void*)’
CEVAP
C sınıfının üye fonksiyonları this
gizli bir parametre geçirilen çünkü senin yazdığın şekilde yapamazsın. pthread_create()
hiçbir fikri ne değeri this
kullanın, çok çalışırsan vakit derleyici tarafından döküm yöntemi için bir işlev işaretçisi türü uygun bir segmetnation hatası. Statik sınıf yöntemi this
parametre yok), ya da düz sıradan bir fonksiyonu kullanmak için sınıf bootstrap için:
class C
{
public:
void *hello(void)
{
std::cout << "Hello, world!" << std::endl;
return 0;
}
static void *hello_helper(void *context)
{
return ((C *)context)->hello();
}
};
...
C c;
pthread_t t;
pthread_create(&t, NULL, &C::hello_helper, &c);
Arama dış sınıf iç sınıfından fonksiyo...
Nasıl sınıfından film şeridi programlı...
Bir fonksiyon bir dizi daha büyüktür?...
Nasıl JavaScript arayan almak için fon...
Anahtar kelime yazma 'içi' f...