首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这是在C++中实现组合的正确方法吗?

这是在C++中实现组合的正确方法吗?
EN

Stack Overflow用户
提问于 2013-02-05 01:50:20
回答 2查看 652关注 0票数 1

一个箱子是由宝藏组成的。

我以以下方式实现了它:

treasure.hpp

代码语言:javascript
复制
#pragma once
class Treasure{

    public:
    protected:
    private:

    //data members
    int gold;

};

chest.hpp

代码语言:javascript
复制
#pragma once
class Chest{

    private: 
    #include "treasure/treasure.hpp"

    public:
    protected:
    private:

    //data members
    Treasure treasure;

};

**假设两个头文件都使用相应的“.cpp”进行编译,以创建对象文件。

是否适合在胸部的类声明中包含宝藏的头文件?

这对我来说是有意义的,因为我有以下行为:

**Main无法创建或直接访问宝藏。

代码语言:javascript
复制
#include "chest.hpp"

int main(int argc, char** argv){

    Chest chest;
}

我从来没有这样看过,所以我不确定这是不是不好的练习。

关于组成,最好采用哪种方法:

  1. 在类声明之前包括标题;是否有主间接包含宝藏?
  2. 如上面所示,在类声明中包括头吗?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-05 01:54:59

我会在#include "treasure.hpp"类声明之前位于chest.hpp的顶部。不是所有的宝藏都在一个箱子里找到的。如果main()想要创建一个不在Chest中的宝藏,那么应该允许它这样做。

另一方面,我当然可以想象私人类会有用的时候。在这种情况下,我将直接在外部类中编码私有类,而不是将它包括在内。

票数 3
EN

Stack Overflow用户

发布于 2013-02-05 01:55:39

我将主要包括间接档案(宝藏包括在顶部的胸部)。有多个包含没有太大的意义。事实上,这是这些预编译器指令的主要用途之一;以防止由于文件多次被包含而导致的编译错误。

如果你用另一种方式去做,你就不能做一些主要的事情,比如创造新的财富,然后把它添加到你的胸膛里,或者把宝藏从你的胸膛里拿出来,然后独立地工作。只有当对象B完全由对象A使用时,该实现才有意义。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14698886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档