C++ 无法识别的类函数副本
所以,我目前正在制作一个基于文本的RPG,我在制作角色的清单时遇到了一个奇怪的问题。我得到以下错误: 令牌前声明中的限定id 此错误位于my Inventory.cpp类中的以下代码行: 无效库存::AddItem*I{…} 当然,我意识到这还不够,所以下面是Inventory.h和Inventory.cpp的所有编码: 在清单h中:C++ 无法识别的类函数副本,c++,class,pointers,game-engine,software-design,C++,Class,Pointers,Game Engine,Software Design,所以,我目前正在制作一个基于文本的RPG,我在制作角色的清单时遇到了一个奇怪的问题。我得到以下错误: 令牌前声明中的限定id 此错误位于my Inventory.cpp类中的以下代码行: 无效库存::AddItem*I{…} 当然,我意识到这还不够,所以下面是Inventory.h和Inventory.cpp的所有编码: 在清单h中: 我已经做了研究,但我根本不知道我到底做错了什么。非常感谢您的帮助!旁注:如果人们不花时间评论关于我的编码的其他我可以改变的事情,而是坚持这个特定的问题,我们将不胜
我已经做了研究,但我根本不知道我到底做错了什么。非常感谢您的帮助!旁注:如果人们不花时间评论关于我的编码的其他我可以改变的事情,而是坚持这个特定的问题,我们将不胜感激。谢谢大家! 这个问题可能会以打字错误结束,但我想举例说明@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;
}
您的代码已在此处重新格式化,以便开始大括号和结束大括号缩进到同一级别
您可能会注意到,更明显的是,您的错误是由于缺少大括号造成的。这种错误通常是前一个函数出错的线索。我还没有尝试编译代码,但是,在Inventory::getInventory中的for循环中,不是缺少了一个右大括号吗?我不想这么说,但如果将大括号对齐,问题会更明显。这就是所谓的奥尔曼风格。哇,我真不敢相信我竟然忽视了这一点。我上下扫描了我的代码很多次,哈哈。谢谢你的建议;这确实完全有道理,为什么一个人应该使用你的格式而不是我使用的格式。再次感谢!
#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;
}
}
}
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;
}