我对 C++ 很陌生,如果我的问题不够具体,请见谅。开始。
我试图>>
为一个我称之为“书”的类重载运算符。“Book”包含“title”、“author”和“publisher”字符串对象、“student count”int 和“price”双变量。我的部分任务是从提供的 .txt 文件中获取这些值,并将值加载到它们相应的变量/对象中。所有值都在 .txt 文件中各自的行中,并且它们都遵循以下格式:
//标题,作者,出版商,价格 从 Java 开始 加迪斯 斯科特/琼斯 105.99
我尝试使用getline()
获取字符串值(我在将价格翻倍后使用临时字符串),但是当我输入它时,Visual Studio 说:
错误:没有重载函数“getline”的实例与参数列表匹配。
我不明白这一点。我包括了<iostream>
和<string>
,我相信它们都是getline
工作所必需的。在转到主代码之前,我正在努力获取类文件,所以对于没有要发布的主代码,我深表歉意。这是课本的 .cpp 文件:
#include <iostream>
#include <string>
#include "book.h"
using namespace std;
book::book()
{
}
book::~book()
{
}
istream& operator>> (istream &in, book &bookInfo) {
string temp;
getline(in, bookInfo.title);
return in;
}
下面是第一个问题...
假设我可以getline
上班,我还有另一个问题。Visual Studio 说这bookInfo.title
是无法访问的,即使这是该类随附的 .cpp 文件。我什istream&
至在类本身中将该函数列为友元函数:
#include <iostream>
#include <string>
class book {
friend istream& operator>> (istream&, book&);
public:
book();
virtual ~book();
private:
string title;
string author;
string publisher;
double price;
};
应该注意的是,我对另一个类使用了几乎相同的语法,并且没有收到错误消息。
感谢您的快速回复。