gpt4 book ai didi

C++ 运算符用指针重载

转载 作者:行者123 更新时间:2023-12-02 00:56:22 27 4
gpt4 key购买 nike

struct Test {
int A = 0;
int B = 0;
};

Test* operator+(const Test *x, const Test *r) {

Test *test = new Test;
test->A = x->A + r->A;
test->B = x->B + r->B;
return test;
}

为什么这不起作用并给出:

3 IntelliSense: nonmember operator requires a parameter with class or enum type

最佳答案

显然,operator+ 要求第一个参数不是指针。这会起作用:

Test* operator+(const Test &x, const Test& r){

Test *test = new Test;
test->A = x.A + r.A;
test->B = x.B + r.B;
return test;
}

但如果不返回指针会更安全,就像 Jonachim 所说的那样。你应该这样做:

Test operator+(const Test &x, const Test& r){

Test test;
test.A = x.A + r.A;
test.B = x.B + r.B;
return test;
}

关于C++ 运算符用指针重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34685386/

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