【发布时间】:2012-02-09 04:24:27
【问题描述】:
我的两个函数有问题。我有一个operator = 方法和一个add 方法。它们自己工作正常,因为我只能在一次编译期间使用其中一个。例如,我需要注释掉 add 函数才能使 operator = 方法起作用,反之亦然。我得到的错误 10 no match for 'operator=' in 'c = (&a)->HUGE_INT::add(((HUGE_INT&)(&b)))'
HUGE_INT HUGE_INT::operator=(HUGE_INT &orig)
{
//code
return *this;
}
HUGE_INT HUGE_INT::add(HUGE_INT &a)
{
//code
return object;
}
//client
HUGE_INT a(9999999),b(1111),c,d;
c = a.add(b);
d = a;
【问题讨论】:
-
您能否发布描述错误的最简单示例 - 您认为应该编译但由于您询问的特定错误而无法编译的代码。
-
就像我说的,当它们是客户端中唯一使用的函数时,这些函数可以正常工作,但是当两者都被调用时,问题就来了
-
我现在看到了,
add返回一个临时值,operator=需要一个非常量引用。您不能形成对临时对象的非常量引用。
标签: c++ class operator-overloading