在C++中我可以重置操作符的函数指针吗?

Mic*_*ick 3 c++ pointers overloading member operator-keyword

在C++中我可以重置操作符的函数指针吗?

特别是我想设置成员函数operator []来使用(或不使用)边界检查.我试了这个没有运气:

这甚至可能吗?如果是这样,任何人都可以更正语法吗?

在MyArrayClass.h中:

class MyArrayClass {
public:
    bool CheckArrayBounds;
    float BoundsCheck(int i) {
        if (i<_size) 
            return _data[i]; 
        return TCpx(_INVALID); 
    }
    float NoBoundsCheck(int i) {
        return _data[i]; 
    }
    void UseBoundsCheck(bool State) {
        if (State) {
            float (operator[]) = &MyArrayClass::BoundsCheck;
        } else {
            float (operator[]) = &MyArrayClass::NoBoundsCheck;
        }
        CheckArrayBounds = State;
    }
    float operator[](int i) { return _data[i]; };
};
Run Code Online (Sandbox Code Playgroud)

Oli*_*rth 6

这是不可能的.从语义上讲,成员函数不是函数指针(尽管它们可以在引擎盖下实现).

您可以在State内部执行检查operator[] (),或使用代理对象.