Mir*_*pas 5 c++ function-pointers method-signature c++11
我有这个课程:
class Foo
{
...
};
class Foo1 : public Foo
{
...
};
...
class FooN : public Foo
{
...
};
Run Code Online (Sandbox Code Playgroud)
是否可以使用这些签名的函数数组:
void f1(Foo1*){}
...
void fN(FooN*){}
Run Code Online (Sandbox Code Playgroud)
如果这些函数是非静态成员函数而不是常规函数,是否有任何更改?我不认为这会改变一些事情.
谢谢!
我找到了这个问题的解决方法:
#include <iostream>
#include <vector>
class Foo
{
};
class Foo1 : public Foo
{
};
class Foo2 : public Foo
{
};
class Foo3 : public Foo
{
};
void f1(Foo1*)
{
std::cout<<"f1\n";
}
void f2(Foo2*)
{
std::cout<<"f2\n";
}
void f3(Foo3*)
{
std::cout<<"f3\n";
}
template<typename T>
void AddPointer(std::vector<typename void (*)(Foo*)>& fPointers, T function)
{
fPointers.push_back(reinterpret_cast<void (*)(Foo*)>(function));
}
void main()
{
std::vector<typename void (*)(Foo*)> fPointers;
AddPointer(fPointers, f1);
AddPointer(fPointers, f2);
AddPointer(fPointers, f3);
Foo1 foo1;
Foo2 foo2;
Foo3 foo3;
fPointers[0](&foo1);
fPointers[1](&foo2);
fPointers[2](&foo3);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2780 次 |
| 最近记录: |