I have a homework assignment where the header file is provided to us, and is unchangeable. Im having trouble figuring out how to correctly use a "display" function, so here is the relevant code.
The header file:
#ifndef SET_
#define SET_
typedef int EType;
using namespace std;
#include <iostream>
class Set
{
private:
struct Node
{
EType Item; // User data item
Node * Succ; // Link to the node's successor
};
unsigned Num; // Number of user data items in the set
Node * Head; // Link to the head of the chain
public:
// Various functions performed on the set
// Display the contents of the set
//
void display( ostream& ) const;
};
#endif
Here is my implementation of the function "display":
void Set::display( ostream& Out ) const
{
Node * temp = Head;
cout << "{ ";
while( temp != NULL )
{
cout << temp << ", ";
temp = temp->Succ;
return Out;
}
}
And here is my driver:
#include <iostream>
#include <iomanip>
#include "/user/cse232/Projects/project08.set.h"
using namespace std;
int main()
{
Set X;
X.insert(10);
X.insert(20);
X.insert(30);
X.insert(40);
X.display();
}
The error I am receiving says that in my driver, I am not using the correct parameters. I understand this because the .h file uses ostream& as a parameter. My question is, what do I use in my driver file when calling "display" as a good parameter?
As you said, the display
expects a parameter of type std::ostream &
.
In your display method implementation, you are outputting in std::cout
which defies the logic of receiving the output stream as a parameter to the method. Here, the point of the parameter is that the display
caller will be able to provide the output stream of his choice. If his choice happens to be the standard output, he will write :
x.display(std::cout);
This means that your display
implementation should only output in the Out
parameter and not std::cout
.
Also note that :
display
implementation returns a value, which it shouldn't (void
return type)std::
prefix in my answer for clarity, but they are not required in your case as the header file contains a using namespace std;
.