【问题标题】:I have a main of a game, and i'm trying to get to the method .go()我有一个游戏的主要内容,我正在尝试使用 .go() 方法
【发布时间】:2019-04-23 04:31:11
【问题描述】:

但是,在这样做的同时,VS 编译器会喊出expression must have class type,虽然在上面的行中我创建了该类的一个实例,但现在我正在从 Stack 处理这个项目,而不是堆,所以我不想使用new,因为之后我必须删除该实例......有什么建议吗? 这是我尝试做的,

 #include"Game.h"
 #include <iostream>

 int main()
    {
     Game g();
     g.go();
     return 0;
    }

【问题讨论】:

  • Game g; - 去掉括号Game g(); 声明了一个名为 g 的函数,它返回一个 Game
  • 我不能构造函数创建游戏所需的许多对象
  • 构造函数仍然会被调用。
  • Game g; 调用构造函数。 Game g(); 声明一个函数。
  • 谷歌搜索“最令人头疼的解析”以查看其他类似但更复杂的示例。

标签: c++ class main


【解决方案1】:

如 cmets 中所述,您需要将 Game g(); 更改为 Game g;。仅当您有要为构造函数传入的值时,才使用括号。例如,如果您的构造函数是:

 Game(std::string player, int damage);

那么你的代码应该是:

Game g("MyGuy", 22);

但是,当您只是执行 Game g(); 时,编译器会像您尝试声明一个函数一样读取它——当然,您不是。

【讨论】:

  • “编译器读取它就像你试图调用一个函数” - 不,它认为你试图声明一个函数。
  • 啊,对不起;我会马上修正我的答案。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-13
  • 1970-01-01
  • 2018-06-25
  • 2021-07-24
  • 1970-01-01
  • 2017-08-02
  • 2020-12-27
相关资源
最近更新 更多