//This is class for Linked list
class SinglyLinkedListNode {
public:
int data;
SinglyLinkedListNode *next;
SinglyLinkedListNode(int node_data) {
this->data = node_data;
this->next = nullptr;
}
};
SinglyLinkedListNode* insertNodeAtHead(SinglyLinkedListNode* head, int key )
{
SinglyLinkedListNode* newNode = &SinglyLinkedListNode(key);
/*1st way of creating a node sing a class constructor
error(i got for this) :error: taking address of temporary [-fpermissive]
*/
SinglyLinkedListNode* newNode = new(SinglyLinkedListNode );//2nd way of creating a node
newNode->data=key;
newNode->next=NULL;//following error i got by second method
/*solution.cc:59:66: error: no matching function for call to ‘SinglyLinkedListNode::SinglyLinkedListNode()’
SinglyLinkedListNode* newNode = new(SinglyLinkedListNode );//2nd way of creating a node
^
solution.cc:10:9: note: candidate: ‘SinglyLinkedListNode::SinglyLinkedListNode(int)’
SinglyLinkedListNode(int node_data) {
^~~~~~~~~~~~~~~~~~~~
solution.cc:10:9: note: candidate expects 1 argument, 0 provided
solution.cc:5:7: note: candidate: ‘constexpr SinglyLinkedListNode::SinglyLinkedListNode(const SinglyLinkedListNode&)’
*/
}
Asked
Active
Viewed 46 times
-3

Some programmer dude
- 400,186
- 35
- 402
- 621

Bharath Choudhary
- 13
- 3
-
2"error: no matching function for call to ‘SinglyLinkedListNode::SinglyLinkedListNode()" should be pretty clear: You default-construct an instance, and the class doesn't have a default constructor. – Some programmer dude Jan 15 '19 at 14:24
-
1If you're that new that you don't understand the concept of default-constructors and construction, then you need to take a few steps back. Please [get a few good books](https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list/388282#388282) to read. – Some programmer dude Jan 15 '19 at 15:03
-
thanks man!! done For others who may have same doubt which i had in 1)struct we write Node* newNode = new(Node); but in class we need to write Node* newNode = new(Node(constructor_argument_ifany)); :) – Bharath Choudhary Jan 15 '19 at 18:12
1 Answers
0
When you write new(SinglyLinkedListNode ); you are creating an object of type SinglyLinkedListNode on the heap and the compiler will try to call the default constructor for that object but the class doesn't have a default constructor. If you were to write new SinglyLinkedListNode( 6 ); the compiler would be able to call the only constructor you have, which takes an int parameter. My guess is that this worked as a struct rather than a class because the struct didn't have any CTORs and so the compiler was able to create a default CTOR for it.

Roy
- 101
- 4