1

宝箱由宝物组成。
在此处输入图像描述
我已经通过以下方式实现了它:

宝藏.hpp

#pragma once
class Treasure{

    public:
    protected:
    private:

    //data members
    int gold;

};

胸部.hpp

#pragma once
class Chest{

    private: 
    #include "treasure/treasure.hpp"

    public:
    protected:
    private:

    //data members
    Treasure treasure;

};

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

在胸的类声明中包含宝藏的头文件是否合适?
这对我来说很有意义,因为我得到以下行为:
在此处输入图像描述
**Main 无法创建或直接访问 Treasure。*

#include "chest.hpp"

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

    Chest chest;
}

我从未见过这种方式,所以我不确定这是否是不好的做法。

关于组成,首选哪种方法:

  1. 包括类声明之前的标题;主要间接包括Treasure?
  2. 如上所示,在类声明中包含私有标题?

4

2 回答 2

3

我会#include "treasure.hpp"Chestclass 声明之前在 chest.hpp 的顶部。并不是所有的宝藏都在箱子里。如果main()要创建不在 a 中的 Treasure,Chest应该允许这样做。

另一方面,我当然可以想象私人课程会有用的时候。在这种情况下,我会直接在外部类中编写私有类而不是#include。

于 2013-02-05T01:54:59.833 回答
1

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

如果你以另一种方式做,你就不能做主要的事情;创造新的宝藏并将其添加到您的胸部或从您的胸部取出宝藏并独立使用它。仅当对象 B 仅由对象 A 使用时,该实现才有意义。

于 2013-02-05T01:55:39.047 回答