无法识别的类功能副本

时间:2018-09-17 21:12:14

标签: c++ class pointers game-engine software-design

因此,我目前正在研究基于文本的RPG,但在处理角色清单时遇到了一个奇怪的问题。我收到以下错误:

qualified-id in declaration before '(' token

此错误位于我的Inventory.cpp类中的以下代码行:

void Inventory::addItem(Item *I){...}

当然,我意识到这还不够,所以这里是Inventory.hInventory.cpp的所有编码:

Inventory.h中:

 #ifndef INVENTORY_H
 #define INVENTORY_H

 #include "Item.h"
 #include <string>

 const int BACKPACK_SIZE = 16;

 class Inventory
 {
     public:
         Inventory();

         void addItem(Item *I);

         std::string getInventory();

         Item *backpack[BACKPACK_SIZE];
     protected:

     private:
 };

 #endif // INVENTORY_H

Inventory.cpp中:

#include "Inventory.h"


 Inventory::Inventory(){
     for(int i = 0; i < BACKPACK_SIZE; i++){
         backpack[i] = nullptr;
     }
 }

 std::string Inventory::getInventory(){
     std::string allItems = "";
     int counter = 1;
     for(int i = 0; i < BACKPACK_SIZE; i++){
          if(backpack[i] == nullptr){
             continue;
          }
          else{
              allItems += (counter + ".) " + backpack[i]->getName() + "\n");
              counter += 1;
          }

     return allItems;
 }

 void Inventory::addItem(Item *I){ //THIS LINE IS WHERE THE ERROR APPEARS
     for(int counter = 0; counter < BACKPACK_SIZE; counter++){
         if(backpack[counter] == nullptr){
             backpack[counter] == I;
             break;
         }
     }
 }

我已经完成了研究,但是我根本无法弄清我到底在做错什么。任何帮助深表感谢!旁注:如果人们不花时间评论我可能会更改的编码方面的其他事情,而是坚持这个特定问题,将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:2)

这个问题可能会以错字形式结束,但我想举例说明@john的一条评论,可能会对您有所帮助。 (同时也回答您的问题)

 std::string Inventory::getInventory()
 {
     std::string allItems = "";
     int counter = 1;
     for(int i = 0; i < BACKPACK_SIZE; i++)
     {
          if(backpack[i] == nullptr)
          {
             continue;
          }
          else
          {
              allItems += (counter + ".) " + backpack[i]->getName() + "\n");
              counter += 1;
          }

     return allItems;
 }

您的代码已在此处重新设置格式,以便将右括号和右括号缩进同一级别。

您可能会注意到,由于缺少括号,您越来越容易出错。