使用类创建节点的方法
way to create a node using class
//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&)’
*/
}
当你写的时候new(SinglyLinkedListNode );您正在堆上创建类型为 SinglyLinkedListNode 的对象,编译器将尝试调用该对象的默认构造函数,但该类没有默认构造函数。如果你要写new SinglelyLinkedListNode( 6 );编译器将能够调用您拥有的唯一构造函数,该构造函数采用 int 参数。我的猜测是,这作为一个结构而不是一个类,因为结构没有任何CTOR,因此编译器能够为它创建一个默认的CTOR。
相关文章:
- 检查两个节点在子节点上是否具有相同状态的更优雅的方法
- 比较两个节点坐标的最佳方法是什么?
- 创建静态哨兵节点的正确方法是什么
- 删除节点方法实际上不会删除二叉搜索树中的节点.C++
- 链接列表的push_front和push_back方法似乎删除了节点
- 从不同的节点插件方法多次调用JS函数
- 如何将按钮添加到节点的属性编辑器面板,该面板调用该节点内的方法?
- 双向链表插入方法实现 - 正在搜索哪个节点
- 从基于矢量的二叉搜索树中删除节点的最佳方法
- 这是在双链表的第一个节点之后插入节点的正确方法吗?
- 使用类创建节点的方法
- 找到其他节点的最快方法
- 在图算法中,确定是否访问节点的最佳方法是什么?
- 节点.JS,C++模块:为什么当我尝试调用本地的长度方法时出现段错误<Array>?
- c ++作业 - 在链接列表代码中初始化节点的正确方法
- 有没有一种方便的方法可以从属性树中删除节点,同时保留其子节点
- C++将节点添加到链表的开头一次后失败.其他方法也有问题
- 从节点数组和边缘向量获取所有子树的最有效方法是什么
- C++ Get 方法不返回指向节点的指针
- C 节点本机扩展调用方法两次