【发布时间】:2016-04-26 21:51:56
【问题描述】:
叫我钝角或者你喜欢的任何其他名字。我的大学从来没有正确地教过我 OOP,因此我更喜欢用 C 编写代码。但是,为了扩展和教自己一些新技能,我决定尝试教自己更多的对象面向技能以及从事我的其他激情/爱好之一,文字冒险。我将在 C++ 中尝试这个,因为这是我大部分本科生使用的语言,所以我最了解它。我要挂断的是我已经为“位置”应该具有的基本属性和方法编写了一个通用的 .h 文件。如果我想做的只是创建一堆房间并能够从 N/S/E/W 转到另一个通用房间并打印房间的描述,那就太好了。我不知道该怎么做是对这个头文件进行更具体的实现。恐怕我没有很好地解释我的问题,所以让我举个例子来说明:
我有一个房间,我们称之为“客厅”。它的北边是“厨房”。它的南边是“Den”。 “客厅”和“书房”之间有一扇门。用户可以说“N”,然后 goNorth() 将被调用,所有内容都将是桃色的。但是,如果用户说“S”,我希望它给他们某种“你不能走那条路”,直到他们打开门。这将要求我要么 1) 完全放弃我的 OOP 想法,而是将每个房间写成它自己的一组函数和变量(我过去会怎么做)或 2) 对我包含的头文件进行特定实现每个房间的所有这些函数和变量(理论上我想怎么做)但是我只是不知道这在技术上是否可行以及是否可以做到。如果有人能指出我正确的方向,将名字呼唤到最低限度,我将非常感激。
你知道,我很清楚有专门用于这个过程的完整语言和引擎,我现在不想制作一个大型的全尺寸游戏,我想做的只是提高我的编程技能,这就是我走这条路的原因。
【问题讨论】:
-
1) 没有正确的方法。 2) 第 1 点适用于一切,而不仅仅是这个程序。
-
同一个
.h通常不能有多个.cpp文件。您可以创建一个抽象基类class Room,其中包含virtual void printDescription() = 0;之类的虚函数,以及实现这些方法的派生类(class Kichen : public Room),并具有该房间状态的数据成员(bool drawerOpen)。 -
@tmlen 绝对没有理由你不能拥有比头文件更多的 cpp 文件。事实上,几乎每个项目都会有至少 一个,
main.cpp. -
同一个函数声明(
.h)不能有多个函数定义(.cpp),这似乎是 OP 正在尝试的。除此之外,.cpp或.h文件的数量无关紧要。