【发布时间】:2017-05-07 19:52:56
【问题描述】:
我正在尝试创建一个用于 BinarySearchTree 的 BinaryNode 类。当我尝试测试这段代码并运行下面的程序时,它编译没有错误,但是当程序运行时,它停止并返回: 分段错误(核心转储)
谁能看到我的错误?
#ifndef _NODE
#define _NODE
#include <string>
#include <iostream>
using namespace std;
template<class ItemType>
class BinaryNode
{
private:
ItemType item; //any data type
BinaryNode<ItemType>* leftChild;
BinaryNode<ItemType>* rightChild;
public:
BinaryNode();
BinaryNode( ItemType newItem );
void setItem(ItemType newData);
ItemType getData() { return item;}
BinaryNode<ItemType>* getLeftChild() { return leftChild; }
BinaryNode<ItemType>* getRightChild() { return rightChild; }
void setLeftChild(BinaryNode<ItemType>* newLeftPtr) { leftChild = newLeftPtr;}
void setRightChild(BinaryNode<ItemType>* newRightPtr) { rightChild = newRightPtr;}
//void display(BinaryNode* rootNode);
};
template<class ItemType>
BinaryNode<ItemType>::BinaryNode()
{
BinaryNode newNode;
newNode.setItem( NULL );
newNode.setLeftChild( nullptr);
newNode.setRightChild( nullptr );
}
template<class ItemType>
BinaryNode<ItemType>::BinaryNode(ItemType newItem)
{
BinaryNode newNode;
newNode.setItem( newItem );
newNode.setLeftChild( nullptr );
newNode.setRightChild( nullptr );
}
template<class ItemType>
void BinaryNode<ItemType>::setItem(ItemType newData)
{
item = newData;
}
#endif
******************* MAIN *************************************
#include<iostream>
#include <string>
#include "BinaryNode.h"
using namespace std;
int main()
{
BinaryNode<string> newNode("string");
cout << newNode.getData() << endl;
return 0;
}
********************** ERROR ***************************
Segmentation fault (core dumped)
【问题讨论】:
-
和 都包含在 main. -
您的问题不完全来自显示的代码。顺便说一句:您的模板化单参数构造函数的实现不正确
-
显示代码。您发布的代码中未定义某些功能!
-
我把整个事情都搞砸了,我试图保持简单。
-
@orangepeelsnice...不,不,不! ..请不要整件事(除非它相当短)。只是重现您的问题的相关最短代码。见Minimal, Complete, and Verifiable Example
标签: c++ algorithm c++11 binary-search-tree