Я создал класс с закрытым вектором, который использует std :: string в качестве типа данных.
#pragma once
#include <string>
#include <vector>
#include <iostream>
class Pokemon {
public:
//Constructor - leaving it here for reference
Pokemon(std::string name, int LVL, int HP, int ATK, int DEF, int SPATK, int SPDEF, int SPD,
std::vector<std::string>moves, std::vector<int>PP);
//Member Functions
std::vector<std::string> getMoves();
private:
std::vector<std::string>moves;
};
Чтобы извлечь информацию из этого вектора, я создал общедоступную функцию класса под названием getMoves (), которая должна возвращать всю информацию из этого вектора. Вот определение функции, которое я написал в .cpp файле.
std::vector<std::string> Pokemon::getMoves() {
return moves;
}
После попытки распечатать вектор с этими движениями с помощью std :: cout и получения ошибки «Нет соответствия для оператора», я понял, что мне пришлось перегрузить оператор <<. </p>
У меня есть несколько вопросов о том, как перегрузить оператор <<, чтобы мой вектор печатался. </p>
- Я не уверен, где объявить оператор перегрузки. Я объявляю это перед моим классом? Внутри моего класса в качестве публичной функции друга? В другом заголовочном файле? Внутри моей основной функции?
- Какой тип я должен перегружать для печати? Я считаю, что это будет тот же тип, что и мой класс, потому что функция getMoves () принадлежит классу Pokemon, но я не уверен, что это так или
std::vector<std::string>
- Как использовать этот перегруженный оператор в моей основной функции? Как обычный std :: cout?
Буду признателен за любую помощь с этими вопросами, спасибо!