没有运算符“ <>”起作用

问题描述 投票:0回答:1

我在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();
}
c++ file-io stream
1个回答
2
投票

在运算符中,第二个参数不是常量引用

ostream& operator<<(ostream& outputStream, Dog& dog)
{
    outputStream << dog.name << ", " << dog.breed << ", " << dog.birthDate << ", " << dog.numberOfShots << ", " << dog.photo << ", " << '\n';
    return outputStream;
}

在成员函数中,使用了对对象的常量引用。

int FileRepository::addDog(const Dog& dog)

声明类似的运算符

ostream& operator<<(ostream& outputStream, const Dog& dog)
{
    outputStream << dog.name << ", " << dog.breed << ", " << dog.birthDate << ", " << dog.numberOfShots << ", " << dog.photo << ", " << '\n';
    return outputStream;
}
© www.soinside.com 2019 - 2024. All rights reserved.