C++ 编写运算符方法的实现

C++ 编写运算符方法的实现,c++,header,operator-overloading,add,long-integer,C++,Header,Operator Overloading,Add,Long Integer,因此,我有一个LongInt类,它将对+和*运算符有新的定义。头文件中的初始化如下所示: friend LongInt operator+(const LongInt& x, const LongInt& y); friend LongInt operator*(const LongInt& x, const LongInt& y); 然而,在我的实现文件中,我定义了在头文件中找到的方法,VS无法识别在头文件中列出的运算符+函数或运算符*函数。我正在使用代码:

因此,我有一个LongInt类,它将对+和*运算符有新的定义。头文件中的初始化如下所示:

friend LongInt operator+(const LongInt& x, const LongInt& y);
friend LongInt operator*(const LongInt& x, const LongInt& y);
然而,在我的实现文件中,我定义了在头文件中找到的方法,VS无法识别在头文件中列出的运算符+函数或运算符*函数。我正在使用代码:

friend LongInt LongInt::operator+(const LongInt& x, const LongInt& y)
{

}


当我试图定义操作符时,为什么这段代码不起作用?

只有在类内声明或定义操作符时才使用
friend
关键字;在类内部将运算符声明为
友元
并在其他位置定义它时,
友元
仅用于声明,而不用于定义。另外,在类中声明为
friend
的函数实际上是命名空间范围中的自由函数,而不是类成员。因此,您的定义应该更像:

LongInt operator +(LongInt const& x, LongInt const& y) { /*...*/ }
LongInt operator *(LongInt const& x, LongInt const& y) { /*...*/ }

要进一步阅读材料,请阅读以下页面:

您正在覆盖运算符。。。您可以使用操作员“调用”它:

LongInt foo;
LongInt bar;
LongInt foobar = foo + bar;

我知道如何使用操作符,但我需要更改操作符的操作,以适应我将要使用它的情况。在本例中,我将添加两个自定义类。@Ctak:您的问题只显示声明,而不显示定义(您将在其中更改它们的操作);你的问题明确地说你打电话给接线员有困难。也就是说,你的问题绝不反映你刚才说的话。那么你真正的问题是什么?
LongInt foo;
LongInt bar;
LongInt foobar = foo + bar;