Bir işlevi başka bir işleve parametre olarak aktarmaya çalışıyorum ve her ikisi de aynı sınıfın üye işlevleri oluyor.C++: İşlev işlevlerini üye işlevleriyle kullanma
Tuhaf bir hata alıyorum ve sorunun ne olduğunu anlayamıyorum.
İşte benim işlevler şunlardır:
void myClass::functionToPass()
{
// does something
}
void myClass::function1(void (*passedFunction)())
{
(*passedFunction)();
}
void myClass::function2()
{
function1(&myClass::functionToPass);
}
Ancak, aşağıdaki hatayı alıyorum:
cannot convert parameter 1 from 'void(__thiscall myClass::*) (void)'
to 'void(__cdecl*)(void)'
Yani ne oluyor? Bunu çalışmaya çalışmak için her çeşit denemeyi denediğimi hissediyorum. Üye işlevler için işlev işaretçileri bile iletebilir misiniz? Bunu nasıl çalıştırabilirim?
Not: İşlev oluşturma Statik statik gerçekten geçerli bir seçenek değildir.
Hata iletisi, sorunu gidermek için gereken tüm bilgileri verir. –
"boost :: function" işlevini kullanmak, işlev işaretleyicilerini kullanmaktan daha kolay olabilir. "Boost :: function" (bu durumda '' function2' 'nun' 'bu '' ya da 'boost :: function ' (bu durumda 'function1' işlevine sahip olması gerekir) işlevinin olup olmadığını kontrol etmeniz gerekir. –
MSalters