0

嘿,我试图在inventory.h中找到我的向量,这样我就拥有了主要的所有向量功能,比如push_back、pop等......而不是输入所有的函数,比如pop、push,我想要一个指针来工作但我得到了错误。任何人都可以帮助我并告诉我我是否走在正确的道路上。

提前致谢。

这是我的代码:

库存.h

//-------------------------------------------------------------------------------
//  Inventory.h
//-------------------------------------------------------------------------------

#ifndef INVENTORY_H
#define INVENTORY_H
#include <string>
#include <vector>

using namespace std; 
class Inventory 
{
public:
    //Constructor
    Inventory();

    //Methods.
    string add(string item);
    void displayInventory();
    void showInventory();
    //vector<string> &GetContainer();
private:
    //Data members
   vector<string> inventory;
   vector<string>::iterator myIterator;
   vector<string>::const_iterator iter;
    };


#endif //INVENTORY_H

库存.cpp

#include "Inventory.h"
#include <iostream>
#include <vector>   //  To enable the use of the vector class.
#include <string>


using namespace std;



Inventory::Inventory()
{

}

string Inventory :: add(string item)
{
inventory.push_back(item);
return item;
}

void Inventory:: showInventory()
{
char input[80];
    cin >> input;
    char inventoryRequest[] = "i";
    int invent = strcmp (input,inventoryRequest);
    //compare the player input to inventoryRequest (i) to see if they want to look at inventory.
    if(invent == 0)
    {
        displayInventory();
    }


}
void Inventory:: displayInventory()
{
//vector<string> inventory;
    cout<< "You have " << inventory.size() << " items.\n";
    cout << "\n******Inventory******";
    cout<< "\nYour items:\n";
    for (int i= 0; i< inventory.size(); ++i)
        cout<< inventory[i] << endl;
}

主文件

int main()
{
inventory.GetContainer().push_back("Stone");
}

以下是错误:

Error   2   error LNK2019: unresolved external symbol "public: class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > & __thiscall Inventory::GetContainer(void)" (?GetContainer@Inventory@@QAEAAV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@XZ) referenced in function _main   C:\Users\Conor\Documents\College\DKIT - Year 2 - Repeat\DKIT - Year 2 - Semester 1 - Repeat\Games Programming\MaroonedCA2\MaroonedCA2\Main.obj  MaroonedCA2
Error   3   error LNK1120: 1 unresolved externals   C:\Users\Conor\Documents\College\DKIT - Year 2 - Repeat\DKIT - Year 2 - Semester 1 - Repeat\Games Programming\MaroonedCA2\Debug\MaroonedCA2.exe MaroonedCA2
4

1 回答 1

1

看起来Inventors::GetContainer()缺少实现。你必须把它放在.cpp文件中,或者在Inventory类声明中内联。

.cpp文件中:

vector<string>& Inventory::GetContainer() { return inventory; }

尽管要小心,但您正在公开一个私有数据成员。如果您打算这样做,不妨将成员公开。这样,您就不会幻想自己拥有某种形式的封装。

于 2012-11-23T16:32:35.987 回答