C++ 类和指针(我再次使用我的 Tile 类:D)

Posted

技术标签:

【中文标题】C++ 类和指针(我再次使用我的 Tile 类:D)【英文标题】:C++ classes and pointers (Me again with my Tile classes :D) 【发布时间】:2012-02-02 20:38:34 【问题描述】:

链接到我的上一个主题: C++ class forward declaration

现在主要的事情:

我决定将所有返回的类型更改为指针以避免内存泄漏,但现在我得到了:

27 C:\Dev-Cpp\Projektyyy\strategy\Tiles.h ISO C++ forbids declaration of `tile' with no type 
27 C:\Dev-Cpp\Projektyyy\strategy\Tiles.h expected `;' before "tick"

它只在基类中,其他一切正常... tile 类中返回 *tile 的每个函数都有这个错误...

一些代码:

class tile

      public:
          double health;
          tile_type type;
          *tile takeDamage(int ammount) return this;;
          *tile onDestroy() return this;;
          *tile onUse() return this;;
          *tile tick() return this;
          virtual void onCreate() ;
;

【问题讨论】:

您不能通过“将所有返回的类型更改为指针”来“避免内存泄漏”。您可以通过编写正确的代码来避免它们。 @Kerrek SB 我需要指针才能拥有正确的代码:) @kittyPL:这是值得商榷的,无法从您的代码中看出。现代 C++ 通常几乎不包含任何裸指针或 new 表达式,而 delete 从不包含,所以我不会指望你有一个好的解决方案...... @kittyPL 我非常怀疑这一点,但即使这是真的,你使用指针很可能会引导to more memory leaks,而不是避免它们。 @kittyPL :不,我的意思是你当然不需要指针来获得正确的代码。 (并且大多数内存泄漏是由使用指针引起的,而不是因为不使用它们......) 【参考方案1】:

tick 的返回值缺少分号,* 在声明指针时位于类型后面:

tile* tick() return this;;

【讨论】:

还要在 tile 后面加上 *,像这样:tile * name;【参考方案2】:
class tile

      public:
          double health;
          tile* takeDamage(int ammount) return this;
          tile* onDestroy() return this;
          tile* onUse() return this;
          tile* tick() return this;
          virtual void onCreate() 
;

给你。我删除了 tile_type 因为我不知道那是什么。可能是一个枚举。除此之外,您还有很多分号问题。

【讨论】:

以上是关于C++ 类和指针(我再次使用我的 Tile 类:D)的主要内容,如果未能解决你的问题,请参考以下文章

C++ 11 通过在类声明中使用指针来节省内存

C++中的指针数组

C++类和对象(类的介绍用法等及this指针)详细解读

C++类和对象(类的介绍用法等及this指针)详细解读

C++类和对象(类的介绍用法等及this指针)详细解读

C++初识类和对象