[英]Overload operator= to exchange data between to classes
我想对某些不同类型的任务使用两个类A
和B
但是我想交换一些数据,两者都应该相似,所以我想使用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.