0

ねえ、ヘッダー ファイル (Inventory.h) の cpp (Inventory.cpp) ファイルと共にヘッダー ファイル (Inventory.h) にベクトルがあります。このような追加と呼ばれる別の関数を作成せずに、プッシュ関数とポップ関数を使用する方法を理解できません。

vector<string>s Inventory ::add(string item)
{
inventory.push_back(item);
return item;
}

しかし、これを行うとエラーが表示されます:

Error   1   error C2511: 'void Inventory::add(std::string)' : overloaded member function not found in 'Inventory'   c:\users\conor\documents\college\dkit - year 2 - repeat\dkit - year 2 - semester 1 - repeat\games programming\maroonedca2\maroonedca2\inventory.cpp 19  1   MaroonedCA2

これが私のInventory.hです

#ifndef INVENTORY_H
#define INVENTORY_H


class Inventory
{
public:
    //Constructor
    Inventory();

    //Methods.
    string add();
    void displayInventory();
    void showInventory();
private:
    //Data members
    };


#endif //INVENTORY_H

そして私のInventory.cpp。

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


using namespace std;
vector<string> inventory;
vector<string>::iterator myIterator;
vector<string>::const_iterator iter;


Inventory::Inventory()
{

}

vector<string>s 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;
}

この関数のヘルプや、ヘッダー ファイルでメインのプッシュ/ポップを使用するための解決策を得ることができれば幸いです。前もって感謝します。

編集:新しいエラー。

Error   1   error C2146: syntax error : missing ';' before identifier 'add' c:\users\conor\documents\college\dkit - year 2 - repeat\dkit - year 2 - semester 1 - repeat\games programming\maroonedca2\maroonedca2\inventory.h   17  1   MaroonedCA2
Error   2   error C4430: missing type specifier - int assumed. Note: C++ does not support default-int   c:\users\conor\documents\college\dkit - year 2 - repeat\dkit - year 2 - semester 1 - repeat\games programming\maroonedca2\maroonedca2\inventory.h   17  1   MaroonedCA2
Error   3   error C2061: syntax error : identifier 'string' c:\users\conor\documents\college\dkit - year 2 - repeat\dkit - year 2 - semester 1 - repeat\games programming\maroonedca2\maroonedca2\inventory.h   17  1   MaroonedCA2
Error   5   error C2146: syntax error : missing ';' before identifier 'add' c:\users\conor\documents\college\dkit - year 2 - repeat\dkit - year 2 - semester 1 - repeat\games programming\maroonedca2\maroonedca2\inventory.h   17  1   MaroonedCA2
Error   6   error C4430: missing type specifier - int assumed. Note: C++ does not support default-int   c:\users\conor\documents\college\dkit - year 2 - repeat\dkit - year 2 - semester 1 - repeat\games programming\maroonedca2\maroonedca2\inventory.h   17  1   MaroonedCA2
Error   7   error C2061: syntax error : identifier 'string' c:\users\conor\documents\college\dkit - year 2 - repeat\dkit - year 2 - semester 1 - repeat\games programming\maroonedca2\maroonedca2\inventory.h   17  1   MaroonedCA2
4

2 に答える 2

4

.h.cppメソッドが一致していることを確認する必要があります

.h

string add(string item);

.cpp

string Inventory::add(string item)

ヘッダーで定義していない関数を呼び出そうとしているため、オーバーロードされた関数が見つかりませんと表示されます。

于 2012-11-21T23:42:41.423 に答える
2

の宣言add()とその実装は異なる署名を使用しているようです:

class Inventory
{
public:
    // ...
    string add();
};

vector<string>s Inventory ::add(string item)
{
    // ...
}

とにかく、余分な「s」vector<string>が完全に場違いのようです。

于 2012-11-21T23:43:04.297 に答える