【问题标题】:expected expression error when I was trying to use "this" pointer当我尝试使用“this”指针时出现预期的表达式错误
【发布时间】:2019-05-16 09:30:30
【问题描述】:

我正在尝试制作一个回合制格斗游戏,并且有一个角色类和一个移动类。

我在开发字符类部分时出现错误,其中有一个函数TakeTurn(character oppoCharacter, cmove selectedMove, field currentField)。其含义是让角色对象对对手角色施放招式。此函数由 move 类中的其他两个函数组成。一个是拼招,一个是发动招式。

我尽我所能,但仍然无法正常工作。我猜这个问题与“this”指针有关,但我不确定。

在character.cpp文件中:

void character::TakeTurn(character oppoCharacter, cmove chosenMove,field currentField){
    chosenMove.SpellMove(this*, oppoCharacter, currentField.FStatusL);
    chosenMove.LaunchMove(this*, oppoCharacter, currentField.FStatusL);
}

在character.h文件中:

void TakeTurn(character oppoCharacter, cmove chosenMove,field currentField);

错误信息:

[ 10%] Building CXX object CMakeFiles/gods.dir/character.cpp.o
/Users/otbooster/Downloads/2019up/cpp/gods/character.cpp:35:31: error: expected expression
        chosenMove.SpellMove(this*, oppoCharacter, currentField.FStatusL);
                              ^
    /Users/otbooster/Downloads/2019up/cpp/gods/character.cpp:36:32: error: expected expression
            chosenMove.LaunchMove(this*, oppoCharacter, currentField.FStatusL);
                                   ^
        2 errors generated.
        make[3]: *** [CMakeFiles/gods.dir/character.cpp.o] Error 1
        make[2]: *** [CMakeFiles/gods.dir/all] Error 2
        make[1]: *** [CMakeFiles/gods.dir/rule] Error 2
        make: *** [gods] Error 2

【问题讨论】:

  • 错字:this* --> *this ?
  • this*?你的意思是*this
  • 我建议你退后几步,回到你的书、教程或课堂笔记(或get a few good books阅读)并重新阅读关于指针和如何使用它们的部分。
  • 顺便说一句,你很可能想要TakeTurn(character&, ...),所以你将你的角色作为对原件的引用,而不是副本。
  • 谢谢您,问题已解决。我刚刚在 cpp 中完成了我的指针课程,但仍然不能很好地处理它。这是错字问题,*这是正确的。

标签: c++


【解决方案1】:

我想你想得到this的引用,在这种情况下请使用:

chosenMove.LaunchMove(*this...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    • 2018-10-06
    • 2022-01-08
    • 1970-01-01
    • 2019-07-18
    相关资源
    最近更新 更多