我正在尝试将代码从常规函数更改为“成员函数指针”一切正常,但我不知道如何定义指向运算符的指针
在我写的主要内容之前
typedef int*(tArray_t<int>::*op)(int)const;
然后在主里面
int main(){
//...
op oper=&tArray_t<int>::operator[];
cout<<*intArray[2]<<endl; // how do i change it here ??????????
//...
}
我正在尝试将代码从常规函数更改为“成员函数指针”一切正常,但我不知道如何定义指向运算符的指针
在我写的主要内容之前
typedef int*(tArray_t<int>::*op)(int)const;
然后在主里面
int main(){
//...
op oper=&tArray_t<int>::operator[];
cout<<*intArray[2]<<endl; // how do i change it here ??????????
//...
}
这是一个使用运算符的玩具示例!和一个指向它的成员指针,看起来 VC++ 10 没问题:
class Test
{
public:
bool operator !() {return true;};
};
typedef bool (Test::* memfunptr)();
int main(){
Test tt;
memfunptr mf = &Test::operator!;
bool res = (tt.*mf)();
return 0;
}
因此,请尝试以下方式:
tArray_t intArray;
(intArray.*insert)(&((intArray.*op)(1)));
(不确定您对 intArray 和 insert 的实际定义是什么,所以我在这里猜测 intArray 是一个实例,而 insert 是另一个成员 ptr)
tArray_t<int> intArray;
我改变了这个
*intArray[2]
有了这个,现在它可以工作了,谢谢 :)
(*(intArray.*oper)(2))