1
#include <functional>
#include <iostream>
struct Foo {
Foo(int num) : num_(num) {}
void print_add(int i) const { std::cout << num_+i << '\n'; }
int get_num(int i) { return num_;}
void set_num(int i) { num_ = i;}
int num_;
};
int main() {
std::function<int(const Foo *, int)> f_get_num;
f_get_num = &Foo::get_num;
return 0;
}
這將在行f_get_num = &Foo::get_num
處生成一個錯誤error: invalid conversion from ‘const Foo*’ to ‘Foo*’ [-fpermissive]
。 Foo::get_num
類型是int (Foo:: *fp)(int)
。有人可以解釋嗎?謝謝。const成員函數的std功能包裝
爲什麼你覺得'get_num'有簽名'int(const Foo *,int)'? – NathanOliver