異なるタイプのコンテナテンプレートを作成しています。タイプの1つは、対象となるshared_ptr
です。だから私は、関数の引数としてメソッドへのポインタを渡すしようとしているが、私はこのエラーを得たm個のオブジェクトのメソッドを呼び出すことオペランド->
と.
ための回避重複コードのため:テンプレートクラスメソッドの引数としてメソッドポインタを渡す方法
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;
}
Iドンしたくない。A::show()
static
。
おかげで、作品 – user3191398