我想函数的定义就像分配给左边的部分,例如int f(int x)包含大括号id est之间的代码的正确部分:{... code ...}。
因此,我想将已经定义的函数的地址分配给重载的运算符。
我不会立即定义重载运算符,因为定义的函数(在实际情况下)是依赖于布尔参数的模板化函数。
下面是我希望能够编译的代码示例。
有可能吗? (未将重载运算符定义为对该函数的单个语句调用)
struct CNT{
int c;
};
CNT addCNT(CNT a,CNT b){
CNT r;
r.c = (a.c<=b.c) ? a.c : b.c ;
return r;
}
// CNT operator+(CNT a,CNT b){addCNT(a,b);}
CNT operator+(CNT,CNT)=&addCNT;
int main(int argc, char **argv)
{
CNT a(10),b(20),c;
c=a+b;
}
最佳答案
重载的operator +只是一个函数名。
但是,您尝试使用的方法是:
CNT operator+(CNT,CNT)=&addCNT;
[无效]等同于分配给函数指针
我已经修复了编译错误,并添加了一个指针:
struct CNT {
CNT(int x) { c = x; };
CNT() { CNT(0); };
int c;
};
CNT (*addCNTptr)(CNT a,CNT b);
CNT addCNT(CNT a,CNT b)
{
CNT r;
r.c = (a.c<=b.c) ? a.c : b.c ;
return r;
}
CNT operator+(CNT a,CNT b){ return addCNTptr(a,b); }
//CNT operator+(CNT,CNT)=&addCNT;
int
main(int argc, char **argv)
{
addCNTptr = addCNT;
CNT a(10),b(20),c;
c=a+b;
return c.c;
}
关于c++ - 为运算符(operator)重载功能分配兼容的功能地址,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36069723/