Note that there are some explanatory texts on larger screens.

plurals
  1. POPointer Compiler Problems
    text
    copied!<p>I haven't used pointers in over 3 years and I am very rusty on this topic. I have receive a ton of errors when I compile the following code. The errors are as follows:</p> <pre><code> ubuntu@ubuntu:~/Desktop/stuff$ g++ test.cpp LinearNode.cpp LinkedList.cpp LinkedList.cpp: In member function ‘void LinkedList::add(int)’: LinkedList.cpp:26: error: request for member ‘getElement’ in ‘((LinkedList*)this)-&gt;LinkedList::contents’, which is of non-class type ‘LinearNode*’ LinkedList.cpp:31: error: request for member ‘getNext’ in ‘((LinkedList*)this)-&gt;LinkedList::contents’, which is of non-class type ‘LinearNode*’ LinkedList.cpp:39: error: request for member ‘setPrevious’ in ‘((LinkedList*)this)-&gt;LinkedList::contents’, which is of non-class type ‘LinearNode*’ LinkedList.cpp:40: error: cannot convert ‘LinearNode’ to ‘LinearNode*’ in assignment LinkedList.cpp: In member function ‘int LinkedList::remove(int)’: LinkedList.cpp:60: error: request for member ‘getElement’ in ‘((LinkedList*)this)-&gt;LinkedList::contents’, which is of non-class type ‘LinearNode*’ LinkedList.cpp:62: error: request for member ‘getElement’ in ‘((LinkedList*)this)-&gt;LinkedList::contents’, which is of non-class type ‘LinearNode*’ LinkedList.cpp:63: error: request for member ‘getNext’ in ‘((LinkedList*)this)-&gt;LinkedList::contents’, which is of non-class type ‘LinearNode*’ LinkedList.cpp:67: error: invalid conversion from ‘LinearNode*’ to ‘int’ LinkedList.cpp:67: error: initializing argument 1 of ‘LinearNode::LinearNode(int)’ LinkedList.cpp:68: error: request for member ‘getNext’ in ‘((LinkedList*)this)-&gt;LinkedList::contents’, which is of non-class type ‘LinearNode*’ LinkedList.cpp: In member function ‘void LinkedList::print()’: LinkedList.cpp:97: error: invalid conversion from ‘LinearNode*’ to ‘int’ LinkedList.cpp:97: error: initializing argument 1 of ‘LinearNode::LinearNode(int)’ </code></pre> <p>Linked List.h:</p> <pre><code>#ifndef LINKEDLIST_H #define LINKEDLIST_H #include&lt;iostream&gt; #include"LinearNode.h" using namespace std; class LinearNode; class LinkedList { public: LinkedList(); void add(int element); int remove (int element); void print(); private: int count; LinearNode* contents; };//ends the class linked list #endif </code></pre> <p>Linked List:</p> <pre><code>#include&lt;iostream&gt; #include"LinearNode.h" #include"LinkedList.h" using namespace std; //linkedlist constructor for an empty linked list LinkedList::LinkedList() { count = 0; contents = NULL; }//ends the constructor //adds an element to the front of the linked list void LinkedList::add(int element) { int found = 0, current = 0; for (int index = 0; index &lt; count; index++) { if (contents.getElement() == element) found = 1; else { contents = *contents.getNext(); }//ends the else statement }//ends the while loop if (found == 0) { LinearNode node(element); node.setNext(contents); contents.setPrevious(&amp;node); contents = node; count++; //print(); cout &lt;&lt; endl; }//ends the found == 0 if statment }//ends the add function //this function removes one element from the linked list. int LinkedList::remove(int element) { int found = 0, result = 0; LinearNode previous; LinearNode current; if (count == 0) cout &lt;&lt; "The list is empty" &lt;&lt; endl; else { if (contents.getElement() == element) { result = contents.getElement(); contents = *contents.getNext(); }//ends the contents.getElement() == element else { previous = contents; current = *contents.getNext(); for (int index = 0; ( (index &lt; count) &amp;&amp; (found == 0) ); index++) if (current.getElement() == element) found = 1; else { previous = current; current = *current.getNext(); }//ends the else statement if (found == 0) cout &lt;&lt; "The element is not in the list" &lt;&lt; endl; else { result = current.getElement(); previous.setNext(current.getNext()); }//ends else statement }//ends the else stamtement count--; }//ends the else statement of count == 0 return result; }//ends the remove function void LinkedList::print() { LinearNode current; current = contents; for (int index = 0; index &lt; count; index++) { cout &lt;&lt; current.getElement() &lt;&lt; endl; current = *current.getNext(); }//ends the for loop }//ends Print function </code></pre> <p>LinearNode.h:</p> <pre><code> #ifndef LINEARNODE_H #define LINEARNODE_H #include&lt;iostream&gt; using namespace std; class LinearNode { public: //Constructor for the LinearNode class that takes no arguments LinearNode(); //Constructor for the LinearNode class that takes the element as an argument LinearNode(int el); //returns the next node in the set. LinearNode* getNext(); //returns the previous node in the set LinearNode* getPrevious(); //sets the next element in the set void setNext(LinearNode* node); //sets the previous element in the set void setPrevious(LinearNode* node); //sets the element of the node void setElement(int el); //gets the element of the node int getElement(); private: LinearNode* next; LinearNode* previous; int element; };//ends the LinearNode class #endif </code></pre> <p>LinearNode: </p> <pre><code> #include&lt;iostream&gt; #include"LinearNode.h" using namespace std; //Constructor for LinearNode, sets next and element to initialized states LinearNode::LinearNode() { next = NULL; element = 0; }//ends LinearNode default constructor //Constructor for LinearNode takes an element as argument. LinearNode::LinearNode(int el) { next = NULL; previous = NULL; element = el; }//ends LinearNode constructor //returns the next element in the structure LinearNode* LinearNode::getNext() { return next; }//ends getNext function //returns previous element in structure LinearNode* LinearNode::getPrevious() { return previous; }//ends getPrevious function //sets the next variable for the node void LinearNode::setNext(LinearNode* node) { next = node; }//ends the setNext function //sets previous for the node void LinearNode::setPrevious(LinearNode* node) { previous = node; }//ends the setPrevious function //returns element of the node int LinearNode::getElement() { return element; }//ends the getelement function //sets the element of the node void LinearNode::setElement(int el) { element = el; }//ends the setElement function </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload