Я создал класс под названием «Item» и класс под названием «Комната», и есть вектор для типов элементов, называемых «Предметы» внутри комнаты. Я добавил несколько элементов в вектор Item и попытался создать геттер для этого элемента Vector. Теперь я пытаюсь распечатать getter, чтобы узнать, действительно ли он получил то, что я хотел, но он дает мне сообщение об ошибке, когда я пытаюсь сделать один способ или просто ничего не печатает, когда я пытаюсь по-другому. Что я делаю не так?Я пытаюсь проверить, работает ли геттер для вектора класса, напечатав его, но он не будет работать.
Room.h есть некоторые вещи, а также следующие строки коды:
.....
///Getters
//get a list of the items currently in the room
vector<Item> GetItems();
private:
///properties
string RoomName;
string RoomDescription;
vector <Door> Doors;
vector <Item> Items;
Room.cpp имеет то, что определенное по умолчанию и перегруженный номер и дал номерам, некоторые элементы, а также имеет следующие:
vector<Item>Room::GetItems()
{
return Items;
}
int Room::GetItemAmount()
{
return Items.size();
}
main.cpp имеет несколько push.backs и прочее, и кажется, что элементы правильно содержатся в векторе. Теперь я не уверен, как распечатать поглотитель для него ... попробовать это:
Room FunStoneRoom = Room();
FunStoneRoom.AddItem(ItemCharcoal);
for (unsigned int VectorPos = 0; VectorPos < FunStoneRoom.GetItemAmount(); VectorPos++)
{
cout << FunStoneRoom.GetItems[VectorPos] << " ";
}
cout << endl;
Это дает мне ошибку: Тяжесть Код Описание проекта Строка файла Подавление Государственный Ошибка номер C3867»:: GetItems ': нестандартный синтаксис; использовать '&', чтобы создать указатель на член ConsoleApplication25 D: \ tiltan \ Visual Studio \ ownclasses \ номер + пункт + дверь \ consoleapplication25 \ main.cpp 51
Я также попытался:
for (unsigned int VectorPos = 0; VectorPos < FunStoneRoom.GetItemAmount(); VectorPos++)
{
FunStoneRoom.GetItems()[VectorPos];
}
cout << endl;
который Безразлично 't дать ошибку, но просто печатает пустую строку. и:
for (unsigned int VectorPos = 0; VectorPos < FunStoneRoom.GetItemAmount(); VectorPos++)
{
cout << FunStoneRoom.GetItems()[VectorPos];
}
cout << endl;
знаменующий моей < < с красной линией, и мне не говорит ни один оператор «< <» соответствует этим операнды ... Как я идти об этом? Я действительно не настолько продвинутый и не знаю много сложных функций и кодов, а также, пожалуйста, постарайтесь быть такими же простыми, как и у меня. Я тоже новичок здесь, так что извините, если я не размещаю и не объясняю себя правильно ...
EDIT: за каждый запрос - я добавляю item.h и item.cpp, но помню, что мне не нужно знают, что они содержат только список элементов в векторе: item.h:
#pragma once
#include <string>
#include <iostream>
using namespace std;
class Item
{
public:
///constructors
Item(); //default item
///overloadeds
//overloaded customizable items
// @param string = Item Name
// @param string = Item Description
Item(string, string);
///destructors
~Item();
///methods
//Display item name and description
void ViewItem();
//Set a new Item Description
void SetItemDescription(string);
//Set a new Item Name
void SetItemName(string);
//Get an Item's name
string GetItemName();
//Get an Item's description
string GetItemDescription();
private:
///properties
string ItemName;
string ItemDescription;
};
item.cpp:
#include "Item.h"
Item::Item()
{
Item::ItemName = "Non Material Item";
Item::ItemDescription = "You cannot see, feel, taste, smell or hear this item";
}
Item::Item(string NewItemName, string NewItemDesc)
{
NewItemName[0] = toupper(NewItemName[0]);
Item::ItemName = NewItemName;
Item::ItemDescription = NewItemDesc;
}
Item::~Item()
{
}
void Item::ViewItem()
{
cout << ItemName << endl;
cout << ItemDescription << endl;
}
void Item::SetItemDescription(string NewItemDescription)
{
if (NewItemDescription.length() < 100)
{
NewItemDescription[0] = toupper(NewItemDescription[0]);
ItemDescription = NewItemDescription;
}
else
{
ItemDescription = "This Item's description is too long";
}
}
void Item::SetItemName(string NewItemName)
{
if (NewItemName.length() < 30)
{
NewItemName[0] = toupper(NewItemName[0]);
ItemName = NewItemName;
}
else
{
ItemDescription = "This Item's name is too long";
}
}
string Item::GetItemName()
{
return ItemName;
}
string Item::GetItemDescription()
{
return ItemDescription;
}
для этого cout << FunStoneRoom.GetItems() [VectorPos]; для работы вам нужно переопределить оператор << для класса Item – user1438832
не уверен, что это значит. –
Пожалуйста, покажите нам, как определяется Item. –