对象类型的 C++ 输出向量内容

0 c++ struct vector object

在我的主.cpp文件中,我有一个包含类型为 的元素的向量BandBand是我implementation.cpp文件中结构的名称。我的主文件如下所示:

int main(int argc,char* argv[]){
    std::vector<Band> bandsVec = readbandFile(argv[1]);
}
Run Code Online (Sandbox Code Playgroud)

我有.h这行代码的相应文件:

struct Band {
    std::string bandName;
    std::string listofMembers;
};

std::vector<Band> readbandFile(std::string a);
Run Code Online (Sandbox Code Playgroud)

在我的主文件中,我尝试使用以下增强for循环来打印矢量内容:

for (Band band: bandsVec) {
    std::cout << band << " ";
}
Run Code Online (Sandbox Code Playgroud)

但是,我在使用的第一组<<运算符时遇到错误:

没有运算符“<<”匹配这些操作数——操作数类型是:std::ostream << Band

如何打印bandsVec矢量的内容?

joh*_*ohn 5

您需要定义一个重载运算符std::ostream& operator<<(std::ostream&, const Band&);C++ 不知道如何自动打印任何旧结构。例如

std::ostream& operator<<(std::ostream& out, const Band& b)
{
    return out << b.bandName << ' ' << b.listOfMembers;
}
Run Code Online (Sandbox Code Playgroud)

如果您知道如何解释它,那么您收到的错误消息就会准确地告诉您问题是什么。