gpt4 book ai didi

c++ - 将兼容的函数地址分配给运算符重载函数

转载 作者:行者123 更新时间:2023-11-28 02:09:52 26 4
gpt4 key购买 nike

我想函数的定义就像分配给左边的部分,例如int f(int x) 包含大括号之间代码的右侧部分 id est: { ... code ... }。

所以我想将一个已经定义的函数的地址分配给一个重载的运算符。我没有立即定义重载运算符,因为定义的函数(在现实生活中)是一个依赖于 bool 参数的模板函数。

下面是我希望能够编译的代码示例。这有可能吗? (没有将重载运算符定义为对函数的单个语句调用)

    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;
}

最佳答案

the overloaded operator+ is just a function name.

但是,您尝试使用的是:

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++ - 将兼容的函数地址分配给运算符重载函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36069723/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com