【发布时间】:2012-01-02 23:46:10
【问题描述】:
我正在自学 C++,“创建”一个 RPG。但是,我坚持创建一个名为 Item 的类,它是所有游戏项目的基类(或者如果它是 Java 中的一个接口)。这是我的代码:
class Item {
public:
virtual const char* GetName() = 0;
};
我阅读了一些关于我正在使用的“纯虚拟”函数的内容。
我的角色类,我在其中使用我的项目:
class Character {
// some code...
void ConsumeItem(Item item);
}
但是 gcc 给了我这个错误:
g++ -Wall -o adventure character.cpp adventure.cpp
In file included from adventure.cpp:3:0:
character.h:36:24: error: cannot declare parameter ‘item’ to be of abstract type ‘Item’
item.h:4:7: note: because the following virtual functions are pure within ‘Item’:
item.h:11:22: note: virtual const char* Item::GetName()
我对 C++ 中的 OOP 非常陌生,因为它与 Java 非常不同。我已经阅读了一些关于 C++ 中抽象类的文章,但我无法让它工作。
您能告诉我实现这一目标的正确方法吗?
【问题讨论】:
-
您需要先学习基本的 C++ 结构,例如引用和指针。我希望这不会扼杀你的嗡嗡声,但你不能指望你从 C++ 中的 Java 学到的东西。语言完全不同。我会推荐a good introductory C++ book。
-
不要通过编写 RPG 来开始学习 C++。试试 Pong 或 Conway 的 Game of Life(如果您想坚持游戏)并首先学习基本概念。今天听起来可能令人失望,但有一天你会为此给我 +1。
-
这个术语是“类型拼接”,本质上你是在基于可能的派生类型创建 item 的实例 - 编译器抱怨该类型无法实例化,因为它具有纯虚方法。
-
其实我已经知道C了,但是由于没有OOP范式,所以我转向了C++。这就是我尝试创建这个 RPG 的原因(只是几个类,以查看 OOP 的实际应用)。但是,我将尝试阅读更多有关 C++ 的内容,以更好地了解该语言的背景。感谢您的提示!