[英]errors for n-ary tree C++
這是我第一次使用任何一種樹。 我為我的樹創建了一個tnode類,現在我正在嘗試為樹本身創建類。 但是我遇到了一些我無法弄清楚的錯誤。
#ifndef Tree_Ntree_h
#define Tree_Ntree_h
// SIZE reprsents the max number of children a node can have
#define SIZE 10
// SEPERATE will allow the program to distinguish when a subtree no longer has children
#define SEPERATOR '@'
#include <iostream>
#include <fstream>
template <typename T>
class tnode{
public:
T value;
tnode *child[SIZE];
tnode() {};
tnode<T> *addChild(T data){
tnode*temp = new tnode;
temp -> value = data;
for (int i=0; i<SIZE; i++)
temp -> child[i] = NULL;
return temp;
}
};
template <typename T>
class Ntree{
private:
tnode<T> *root;
T data;
std::string filename;
public:
Ntree(){ root= NULL;}
Ntree( T data){ *root = data;}
inline T getRoot(){return root;}
我的錯誤在最后三行。 在我的代碼的最后一行(getRoot)中,這是錯誤:
沒有可行的從'tnode> *'到'std :: __ 1 :: basic_string'的轉換
在倒數第二行和第三行到最后一行(* root = data)(root = NULL)這是錯誤:
沒有可行的重載'='
我不明白為什么在這種情況下需要重載=運算符。
root
是一個tnode<T> *
, getRoot
返回一個T
對象。 編譯器不知道如何將一個轉換為另一個。 您可能只想返回root->value
但是,您沒有為root
分配任何空間,它可能為NULL
,因此您需要確定它為NULL時要執行的操作。
在這一行:
Ntree( T data){ *root = data;}
這次你將T
分配給tnode<T>
,編譯器不知道該怎么做。 您還沒有為root
分配任何內存。 相反,你可能想要todo之類的東西:
Ntree( T data){ root = new T; root->value = data;}
或者更好的是還有一個tnode
構造函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.