Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <iostream>
- using namespace std;
- template <class ptrType> class A
- {
- public:
- ptrType ptrData;
- A<ptrType>::A(ptrType S)
- {
- ptrType ptrData = S;
- ptrData();//Вызов Foo по указателю из конструктора класса.(работает)
- }
- void Foo2();
- };
- template <class ptrType>void A<ptrType>::Foo2()
- {
- ptrData();//Вызов Foo по указателю.(не работает)
- }
- void Foo()//Интересующий функция.
- {
- cout << "1";
- };
- int main()
- {
- typedef void(*PTR_Foo)();
- PTR_Foo ptrFoo = &(Foo);//Указатель на функцию Foo
- A<PTR_Foo> a(ptrFoo);
- a.Foo2();//Вызов Foo2 из экземпляра а класса А
- return 0;
- }
- ptrType ptrData = S;
- ptrData = S;
- A<ptrType>::A(ptrType S) : ptrData(S)
- {
- ptrData();
- }
- void (A<PTR_Foo>::*f)() = &A<PTR_Foo>::Foo2;
- (a.*f)();
- class B
- {
- public:
- void Foo() { cout << "1"; };
- };
- B b;
- std::function<void()> f2 = std::bind(&B::Foo, b);
- f2();
- std::shared_ptr<B> pb = std::make_shared<B>();
- std::function<void()> f2 = std::bind(&B::Foo, pb);
- f2();
Add Comment
Please, Sign In to add comment