类之间的转换

Nim*_*ima 3 c++ architecture

假设我们有一个名为A的类和另一个名为B.的类,我们想要一个将A转换为B的转换方法.

从软件架构的角度来看,哪一个更受青睐?

  1. A.export()
  2. B.import()
  3. 写一个转换器类,即convert(A, B)Convert(A)或...

如果语言很重要,我正在使用C++

Jam*_*lis 7

它完全取决于您打算如何使用它,但在许多情况下,最简单的方法是实现转换构造函数:

class B { };
class A
{
    A(const B& b) { }
};

B b;
A a = b; //< calls converting constructor
Run Code Online (Sandbox Code Playgroud)

(当然,你可以实现一个转换构造从转换AB,以及)

  • 作为补充,我建议将convertion构造函数声明为`explicit A(const B&b)`.然后你将不得不用'A a = A(b)`来调用它,但是当'B`被无意地转换为'A'时,你也将消除讨厌错误的风险. (4认同)