【发布时间】:2019-03-12 14:47:51
【问题描述】:
我创建了一个带有私有向量的类,它使用 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 打印具有这些移动的向量并收到“与运算符不匹配”错误后,我意识到我必须重载
我有几个关于如何重载
- 我不确定在哪里声明重载运算符。我在上课之前声明它吗?在我的课堂上作为公共朋友功能?在不同的头文件中?在我的主要功能中?
- 我应该重载打印什么类型?我相信它与我的类是同一类型,因为 getMoves() 函数属于 Pokemon 类,但我不确定是那个还是
std::vector<std::string>- 如何在我的主函数中使用这个重载的运算符?就像普通的 std::cout 一样?
感谢您对这些问题的任何帮助,谢谢!
【问题讨论】:
-
您可以将
vector<std::string>放在反引号中以避开<> -
@BennoStraub 指出,谢谢!
-
您可以为
vector和重载运算符创建包装类 -
你的问题太宽泛了。请一题一题。无论如何,这应该有助于澄清其中一些:stackoverflow.com/questions/4421706/…
-
@user463035818 我很欣赏这个主题的链接,谢谢!很抱歉在一个问题中问了几个问题,我以后会记住的
标签: c++ class c++11 vector operator-overloading