我正在爲不同類型創建容器模板。其中一種是shared_ptr
來反對。因此,對於操作數->
和.
調用對象方法餘米試圖通過指針的方法函數參數避免重複代碼,但我得到這個錯誤:如何在模板類方法中將方法指針作爲參數傳遞
error: invalid use of non-static member function 'void A::show()'
{ doOperation(U::show); }
代碼:
template <typename T, typename U>
class MepVector
{
private:
typedef void(U::*Operation)();
public:
MepVector() {}
void doOperation(Operation operation)
{
for(const auto& t : mepVector_)
{
(t.*operation)();
}
}
void add(T t)
{ mepVector_.push_back(t); }
void show()
{ doOperation(U::show); }
private:
std::vector<T> mepVector_;
};
class A
{
public:
A() {};
void show()
{ cout<<"udalo sie!"<<endl; }
};
int main() {
MepVector<A,A> myVector;
myVector.add(A());
myVector.show();
return 0;
}
我不我不想讓A::show()
static
。
感謝,它的工作原理 – user3191398