我在打印由类方法返回的值时遇到麻烦。在DataClass实例中,cout 将使用以下形式的语句打印dataMember(一个int):
cout << dataClassInstance.getDataMember();
但是,包含一个DataClass作为成员的ListEntry无法使用其自己的函数打印相同的值。表格是:
cout << listEntryInstance.getDataClass();
ListEntry使用其自己的get函数,该函数调用DataClass的get函数以返回相同的int值,但它给出了错误:
[错误]与'operator <<'不匹配(操作数类型为 'std :: basic_ostream'和'DataClass')
任何关于我做错事情的想法将不胜感激。到目前为止,我似乎找不到任何解决方案。
class DataClass
{
private:
dataType dataMember;
public:
//default
DataClass()
{
dataMember;
}
//parameterized
DataClass(dataType inputData)
{
dataMember = inputData;
}
//copy
DataClass(const DataClass &inputData)
{
dataMember = inputData.dataMember;
}
//destructor
~DataClass()
{
}
//set
void setData(dataType inputData)
{
dataMember = inputData;
}
//get
dataType getDataMember()
{
return dataMember;
}
};
class ListEntry
{
private:
DataClass data;
ListEntry* nextEntryPtr;
ListEntry* prevEntryPtr;
public:
//default
ListEntry() : data()
{
nextEntryPtr = NULL;
prevEntryPtr = NULL;
}
//parameterized
ListEntry(const DataClass& inputData) : data(inputData)
{
nextEntryPtr = NULL;
prevEntryPtr = NULL;
}
//copy
ListEntry(const ListEntry& entryToCopy) : data(entryToCopy.data)
{
nextEntryPtr = NULL;
prevEntryPtr = NULL;
}
//destructor
~ListEntry()
{
}
//set
void setDataClass(DataClass dataInput)
{
data.setData(dataInput.getDataMember());
}
void setNextEntry(ListEntry* entryPtr)
{
nextEntryPtr = entryPtr;
}
void setPrevEntry(ListEntry* entryPtr)
{
prevEntryPtr = entryPtr;
}
//get
DataClass getDataClass()
{
return data.getDataMember();
}
ListEntry* getNextEntry()
{
return nextEntryPtr;
}
ListEntry* getPrevEntry()
{
return prevEntryPtr;
}
};
我用来测试每个类的功能的代码示例。 DataClass给出了预期的结果,ListEntry仅给出了错误。
//STUB TEST FOR DATACLASS
dataType constructTest = 42;
cout << "Creating DataClass with default constructor."
<< endl;
DataClass defaultTestData; //default initialize
cout << "Value held in DataClass: "
<< defaultTestData.getDataMember()
<< endl << endl;
//STUB TEST FOR LISTENTRY
cout << "Creating list entry with default constructor." << endl;
ListEntry defaultEntry;
cout << "Value held in list entry:"
<< defaultEntry.getDataClass()
<< endl << endl;
答案 0 :(得分:1)
您正在尝试打印DataClass
,而不是其成员。对于此类,您尚未指定如何打印(通过重载<<
运算符)。那就是编译器所抱怨的。
您想要的可能是
cout << listEntryInstance.getDataClass().getDataMember();
答案 1 :(得分:1)
DataClass的流插入运算符未重载
friend std::ostream &operator<<(std::ostream &out, const DataClass &dc) {
out << dc.dataMember;
return out;
}