0
我正在嘗試爲節點構建一個類。然而似乎使用拷貝構造像我一樣下面生成錯誤:error: conversion from 'Node<int>*' to non-scalar type 'Node<int>' requested
圖的節點類(C++)
編譯點到線Node<int> child= new Node<int>(*(n.returnChildren()[0]));
請注意我的問題的目的是學習C++,我知道我能找到一個網上更好的課程。謝謝
這裏是我的代碼:
#include <iostream>
#include <string>
#include <cmath>
#include <vector>
#include <iterator>
using namespace std;
/* ******************************************************* Node ********************************************************* */
template<class T>
class Node
{
private:
T _value;
vector<Node*> children;
public:
Node(T value);
Node(const Node<T>& node);
void AddChild(Node<T>* node);
T getValue() const;
vector<Node<T>*> returnChildren() const;
//~Node();
};
template <class T>
Node<T>::Node(T value):_value(value)
{
children.push_back(NULL);
}
template <class T>
Node<T>::Node(const Node& node):_value(node.getValue()),
children(node.returnChildren())
{
}
template <class T>
void Node<T>::AddChild(Node* node)
{
if (children[0]=NULL){children.pop_back();};
children.push_back(node);
}
template <class T>
T Node<T>::getValue() const
{
return _value;
}
template <class T>
vector<Node<T>*> Node<T>::returnChildren() const
{
return children;
}
/*
template <class T>
Node<T>::~Node()
{
for (vector<Node<T>*>::iterator it=children.begin() ; it!=children.end() ; it++)
{
delete (*it);
}
}*/
int main()
{
Node<int> n(3);
Node<int> nn(4);
n.AddChild(&nn);
Node<int> child= new Node<int>(*(n.returnChildren()[0]));
}
我也許可以幫助編譯器在哪裏出現錯誤標記的位置。 – Wolf
載體兒童;我想你可能真的定義了Node指針的類模板,如下所示:vector *> children; –
Netwave