У меня проблемы с печатью значения, возвращенного методом класса.В экземпляре DataClass cout будет печатать dataMember (int), используя инструкцию вида:
cout << dataClassInstance.getDataMember();
Однако ListEntry, который содержит DataClass в качестве члена, не можетраспечатать это же значение, используя свою собственную функцию.Форма:
cout << listEntryInstance.getDataClass();
ListEntry использует свою собственную функцию get, которая вызывает функцию get DataClass для возврата того же значения int, но вместо этого выдает ошибку:
[Error]нет совпадения для 'operator <<' (типы операндов: 'std :: basic_ostream' и 'DataClass') </p>
Любые идеи о том, что я делаю неправильно, будут высоко оценены.Похоже, я не могу найти никаких решений из того, на что я смотрел.
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;