【发布时间】:2020-07-25 09:49:00
【问题描述】:
我在 C++ 中遇到一个问题,出现“无运算符”
int FileRepository::addDog(const Dog& dog)
{
if (this->findDog(dog.getName()) != -1)
return -1;
std::ofstream fout;
fout.open(this->fileName.c_str(), std::ios_base::app);
fout << dog;
fout.close();
return 0;
}
ostream& operator<<(ostream& outputStream, Dog& dog)
{
outputStream << dog.name << ", " << dog.breed << ", " << dog.birthDate << ", " << dog.numberOfShots << ", " << dog.photo << ", " << '\n';
return outputStream;
}
我还导入了特定的头文件和库,并且“>>”运算符有效。
它在这里工作:
void FileRepository::writeVectorToFile(std::vector<Dog> vectorOfDogs)
{
ofstream fout(this->fileName.c_str());
for (Dog dog : vectorOfDogs)
fout << dog;
fout.close();
}
【问题讨论】:
-
顺便说一句,您也应该在基于范围的循环中使用
const Dog&,即for (const Dog& dog : vectorOfDogs),因为目前您正在对向量中的狗进行不必要的复制。 (然后你会得到同样的错误) -
这样的问题应该包含minimal reproducible example。
-
向量也被不必要地复制了