繁体   English   中英

重载operator =以便在类之间交换数据

[英]Overload operator= to exchange data between to classes

我想对某些不同类型的任务使用两个类AB 但是我想交换一些数据,两者都应该相似,所以我想使用A = B作为ex。

那么,如何在避免头文件中包含双向的情况下使用它呢?

示例:在class_a.h中:

#include class_b.h
class A {
  private:
    int i;
  public:
    A& operator=(B& const b);
}

class_b.h:

#include class_a.h // won't work here ...
class B {
  private:
    unsigned long n;
  public:
    B& operator=(A& const a);
}

您必须向前声明另一个类:

class B;
class A {
  private:
    int i;
  public:
    A& operator=(B& const b);
}

另请注意,您可能应该声明friend class B; 如果您没有吸气剂并且需要访问B::n ,则在A的定义内。

您需要使用前向声明:

class A;

class B {
  private:
    unsigned long n;
  public:
    B& operator=(A& const a);
}

不一定更好,但也可以考虑不要覆盖分配,而是提供转化的想法。

你可以喜欢

#include "b.h"
class A
{
public:
    A(const B&);
    operator B() const;
};

如果你做a=b; 它会隐式地变成a=A(b) ,如果您这样做b=a; 将隐式变为b=a.operator B();

这就像说B可以“提升”为A,A可以“提升”为B。但是您可以在A周围做所有事情,而不用修改B。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM