【发布时间】:2020-10-13 12:36:47
【问题描述】:
所以对于我的代码,我想构建一个四叉树。这意味着我必须细分数据集。为了解决这个问题,我希望拥有外部节点(A 类)和内部节点(B 类)以及一种将外部节点转换为内部节点的方法。
有没有办法让 A 类将自己转换为 B 类,这种方式可以从 A 类本身内部完成,同时保留指向它的指针?
对不起,我不知道如何更清楚地解释这一点。
class A{
public:
int a;
int b;
int c;
void convert(){
*convert class A into class B: conserving int a and int b, and discarding int c*
}
};
class B{
public:
int a;
int b;
void* One; // can be a pointer to an instance of class A or class B
void* Two; // can be a pointer to an instance of class A or class B
};
编辑:感谢您的反馈,我会重新考虑我的策略。
Edit2:我在这里找到了不存储无用指针的答案: https://stackoverflow.com/a/48330314/6859125
【问题讨论】:
-
不干净,你有这样的需求表明你的设计已经过时了。
-
链接问题的答案是covers this explicitly
-
你的意思是 - 你想返回一个
B,它等同于一个给定的A?是的,您可以使用常规方法或user-defined conversion。 -
您想要实现什么 - 如果您转换它会产生什么结果/好处(转换后的意思是什么)?
-
或者您想将
A对象原位替换为B对象?你不能合理地这样做。