Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 可以在友元类B中重载类A的运算符吗?_C++ - Fatal编程技术网

C++ 可以在友元类B中重载类A的运算符吗?

C++ 可以在友元类B中重载类A的运算符吗?,c++,C++,我试图从实验室解决以下问题,它说: 定义一个名为Repository的类,该类具有2个整数专用变量。>类包含一个空构造函数和另一个带2个参数的构造函数。>类中还包括一个显示变量值的>accesor方法。写另一个叫做数学的课程,它是第一个>的朋友。此类包含应用于第一个类中存储的值的基本算术>运算(+、-、*、/)的实现。每个>算术方法都接收>第一个类实例化的对象作为参数 我已经在互联网上搜索了好几个小时了,但我还没有在另一个类中找到任何关于重载类运算符的内容。我了解重载机制,我使用friend函数

我试图从实验室解决以下问题,它说:

定义一个名为Repository的类,该类具有2个整数专用变量。>类包含一个空构造函数和另一个带2个参数的构造函数。>类中还包括一个显示变量值的>accesor方法。写另一个叫做数学的课程,它是第一个>的朋友。此类包含应用于第一个类中存储的值的基本算术>运算(+、-、*、/)的实现。每个>算术方法都接收>第一个类实例化的对象作为参数

我已经在互联网上搜索了好几个小时了,但我还没有在另一个类中找到任何关于重载类运算符的内容。我了解重载机制,我使用friend函数解决了这个问题,但我仍然在问自己是否可以像上面提到的那样做,如果可以,我想知道如何做。提前谢谢

我试过上面提到的解决办法


所要求的只是实现算术运算。并不是说你必须让他们超负荷工作:

#include <iostream>

class Mathematics;

class Repository
{
    friend Mathematics;
  private:
    int a;
    int b;

  public:
    Repository(int _a, int _b)
        :a(_a), b(_b) { }
};

class Mathematics
{

public:
    static int add(const Repository &rep)
    {
        return rep.a + rep.b;
    }
};

int main()
{
    Repository rep(1, 2);
    std::cout << Mathematics::add(rep);    
}
#包括
课堂数学;
类存储库
{
数学朋友;
私人:
INTA;
int b;
公众:
存储库(int_a,int_b)
:a(_a),b(_b){}
};
课堂数学
{
公众:
静态整数添加(常量存储库和rep)
{
返回rep.a+rep.b;
}
};
int main()
{
存储库代表(1,2);

STD:你用一个C标签来链接一个问题,但是标记了你的C++。你所发布的实验室问题没有说“另一个类中的重载运算符”。“数学有操作符,是存储库的朋友。<代码>是否可以在A类B类中超载操作符?< /代码> -不,剩下的问题对我来说是个谜。这听起来像是一些可怕的指令。C++功能不需要被分类,因为要澄清事情,我不知道这一个!
#include <iostream>

class Mathematics;

class Repository
{
    friend Mathematics;
  private:
    int a;
    int b;

  public:
    Repository(int _a, int _b)
        :a(_a), b(_b) { }
};

class Mathematics
{

public:
    static int add(const Repository &rep)
    {
        return rep.a + rep.b;
    }
};

int main()
{
    Repository rep(1, 2);
    std::cout << Mathematics::add(rep);    
}