Có thể trong C++ không? Ví dụ tôi có một con trỏ tới một hàm mang theo không có tham số và kiểu trả về của nó là khoảng trống:Gán con trỏ cho một hàm địa chỉ của con trỏ tới đối tượng hàm
void (*f)();
và và một đối tượng hàm:
class A
{
public:
void operator()() { cout << "functor\n"; }
};
Có thể gán cho f
địa chỉ đối tượng A
? Và khi tôi gọi f()
để gọi số A
functor?
tôi đã cố gắng này, nhưng nó không hoạt động:
#include <iostream>
using namespace std;
class A
{
public:
void operator()() { cout << "functorA\n"; }
};
int main()
{
A ob;
ob();
void (*f)();
f = &ob;
f(); // Call ob();
return 0;
}
tôi nhận được C:\Users\iuliuh\QtTests\functor_test\main.cpp:15: error: C2440: '=' : cannot convert from 'A *' to 'void (__cdecl *)(void)' There is no context in which this conversion is possible
Có cách nào để đạt được điều này?
Bạn không thể sử dụng 'std :: function'? –
chris
Có cách nào để làm điều đó với tiêu chuẩn cũ, một trước khi C++ 11? –