如何打印通过类方法返回的值
How to print a value returned by a class method
我正在遇到麻烦,打印了由类方法返回的值。在数据级实例中,COUT Will 使用表单的语句打印DataMember(a int):
cout << dataClassInstance.getDataMember();
但是,ListEntry包含数据级作为成员,无法使用自己的函数打印相同的值。表格是:
cout << listEntryInstance.getDataClass();
ListEntry使用其自己的GET函数,该函数调用Dataclass的GET函数返回相同的INT值,但它给出了一个错误:
[错误]"操作员&lt;&lt;''无匹配(操作数类型是 'STD :: BASIC_OSTREAM'和'DATACLESS')
关于我做错了什么的任何想法将不胜感激。到目前为止,我似乎找不到任何解决方案。
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;
您正在尝试打印DataClass
,而不是其中的成员。对于此类,您尚未指定如何打印它(通过超载<<
操作员)。这就是编译器所抱怨的。
您想要的是
cout << listEntryInstance.getDataClass().getDataMember();
流插入运算符对dataclass
没有过多。friend std::ostream &operator<<(std::ostream &out, const DataClass &dc) {
out << dc.dataMember;
return out;
}
相关文章:
- 从父类方法返回子类对象
- 我的模板类方法返回错误类型?
- 我无法使用C++指针指向类方法返回的 std::vector
- 类方法返回指向具有模板的类成员的指针
- 从类方法返回 "const char*" 作为 std::string&
- 从基类方法返回对派生类的引用
- 如何打印通过类方法返回的值
- 如何检查模板类方法返回类型
- 如何<double>从基于 QObject 的类方法返回 QList 以在 Qt 脚本中使用
- 类方法返回最后由C 组成的
- 如何从模板化的类方法返回依赖类型
- 为什么有些类方法返回"*this"(self的对象引用)?
- C++类方法返回不同的类型
- 基类方法返回派生类 objec
- 从类方法返回结构
- 从类方法返回作用域枚举时,命名空间混淆
- Turtle Mock: MOCK_EXPECT如果被Mock的类方法返回值则失败
- 简单的一行类方法返回错误的值
- 从类方法返回成员unique_ptr
- c++从类方法返回一个对象数组