我的lamba表達式有一些問題:我有一個擁有函數指針的類。在C++ lambda函數中繼承參數
class SomeClass
{
void (*execFunc)(Base*);
}
而且我有一個基類:
class Base
{
SomeClass* someClass;
void doSomething() { someClass->execFunc(this); }
}
從這一個我得到很多其他類,它們的execFunc
旨意是不同的。因此我想使用lambda表達式; e.g:
class Derived final : public Base
{
int someDerivedAttrib;
static List<SomeClass*> someClasses = createSomeClasses(); // holds all possible
// SomeClasses for this
// derived class
static List<SomeClass*> createSomeClasses()
{
List<SomeClass*> scs;
SomeClass* sc = new SomeClass();
sc->execFunc = [] (Derived* derived) { derived->someDerivedAttrib = 10; };
scs << sc;
return scs
}
}
但unfornately這是不行的,因爲演員是void (*)(Derived*)
到void (*)(Base*)
是不可能的。任何建議,除了在每個lambda函數中使用Base*
到Derived*
強制轉換?
期待你們的答案, Albjenow
出於好奇,這有什麼實際的使用場景? –