Class 使用哪一种:类中的类还是类中的结构?

Class 使用哪一种:类中的类还是类中的结构?,class,c++11,struct,Class,C++11,Struct,因此,我有一个关于C++11编码最佳实践领域的哲学问题 创建从一个系统到另一个系统转换数据的应用程序时。您应该在类中定义所有内容,还是在类中使用结构 这是我所指的一个更具体的例子 对于典型的类对象。我是否应该这样创建它: class Contact { std::string Name; std::string Address; :: :: :: void Load(); void Save(); std::string O

因此,我有一个关于C++11编码最佳实践领域的哲学问题

创建从一个系统到另一个系统转换数据的应用程序时。您应该在类中定义所有内容,还是在类中使用结构

这是我所指的一个更具体的例子

对于典型的类对象。我是否应该这样创建它:

class Contact {
    std::string Name;
    std::string Address;
    ::       ::       ::
    void Load();
    void Save();
    std::string OtherFunctions( std::string Name )
}
还是最好将数据从类中分离出来:

struct ContactInfo {
    std::string Name;
    std::string Address;
    ::       ::       ::
}

class Contact {
    ContactInfo data;
    void Load();
    void Save();
    std::string OtherFunctions( std::string Name )
}
我考虑在类中使用Struct的几个原因是在API之间传输数据的能力。例如,这些对象的创建是在一个低级别的纯C++应用程序中完成的。但是,在某个过程中,它会被暴露在托管的C++应用程序中,然后最终在.NET应用程序中被消费。 第二,由于信息是从一个函数传递到另一个函数的,所以我只传递信息,而不传递类对象。对于现代编译器,这一点可能是无声的,但从逻辑上讲,仅传递数据似乎比传递对象更好

第三,它将管理对象数据所需的类成员与数据本身分离。因此,拥有像ErrorCode、ErrorMessage等这样的成员不会污染被认为是数据的内容和不被认为是数据的内容

我是不是离开基地了?
是否有更好的方法来执行此类活动?

结构和类之间的主要区别在于可见性。除此之外。。。。这是个人的选择。如果ContactInfo是联系人中的所有数据,则通常不会将其作为单独的类或结构进行分解。类是数据加上可在其上执行的函数,因此将数据直接放在类中是正常且惯用的。也就是说,我可以看到辅助数据可能会潜入联系人中,如存储路径信息、创建日期、所有者等。如果是这种情况,将核心数据分开可能是一个很好的设计。Mgetz…我阅读了您建议的主题,但它似乎前后摇摆不定,而且是从一般类的使用角度来理解的。但对于API开发或翻译引擎,我正在寻找一个更明确的答案。我还想知道是否有某种形式的继承也能解决这个问题。在这种情况下,多重继承可能是有价值的,而我通常不会这样做;一个用于基类,然后一个用于外部使用的数据成员。思想?