重载<<运算符以打印矢量数据成员

时间:2019-03-12 14:47:51

标签: c++ class c++11 vector operator-overloading

我创建了一个带有私有向量的类,该向量使用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打印具有这些移动的矢量并收到“操作符不匹配”错误后,我意识到我必须重载<<操作符。

对于如何重载<<运算符,以便我的矢量能够打印,我有几个问题。

  1. 我不确定在何处声明重载运算符。是否在类之前声明它?在我的课堂上作为公共朋友活动吗?在不同的头文件中?在我的主要功能内?
  2. 我应该重载哪种类型才能打印?我相信它与我的班级类型相同,因为getMoves()函数属于Pokemon类,但是我不确定是那个类型还是std::vector<std::string>
    1. 如何在我的主要功能中利用此重载运算符?就像普通的std :: cout吗?

对于这些问题的帮助,我们将不胜感激!

0 个答案:

没有答案