簡體   English   中英

n-ary樹C ++的錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM