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)的主要内容,如果未能解决你的问题,请参考以下文章