小编Zac*_*eld的帖子

使 C++ 重载运算符成为函数指针

有没有办法将运算符(特别是运算符 >>)作为函数指针重载,然后在运行时为其分配一个函数?我希望能够在运行时查看文件以确定文件的格式,然后将正确的函数指针分配给运算符以使其按需要工作。在调用运算符之前,我会在构造函数中分配正确的函数。我意识到还有其他(也许更简单)的方法可以做同样的事情,但我想知道这是否可能。

这是我尝试过的:

bool Flag; // In global scope - set in main()

class MyClass
{
private:
    int data;
    friend istream & function1(istream & in, MyClass & c);
    friend istream & function2(istream & in, MyClass & c);
public:
    MyClass() :data(0) {operator>>=((Flag)?&function1:&function2);}
    friend istream& (*operator>>)(istream & in, C & c);
};

// function1 and function2 definitions go here

int main (int argc, char **argv)
{
    if (argc > 2)
        Flag = ((atoi(argv[1]) > 1) ? 1 : 0);
    MyClass mcInstance;
    ifstream …
Run Code Online (Sandbox Code Playgroud)

c++ function-pointers operator-overloading

5
推荐指数
1
解决办法
1262
查看次数