#include<iostream>
#include<string>
using namespace std;
template<typename T>
struct Node{
T data;
Node* left;
Node* right;
Node(T x) : data(x), left(NULL), right(NULL){}
};
template<typename T>
Node<T>* new_node(T x)
{
Node<T>* return_node = new Node<T>(x);
return return_node;
}
int main()
{
Node<string>* root = new_node("hi"); //error!
string x = "hi";
Node<string>* root2 = new_node(x); //OK
}
爲什麼你不能在括號內使用字符串?有沒有簡單的方法來完成相同的任務,而無需聲明字符串,然後創建節點,或者這是唯一的方法?爲什麼不能將字符串文字傳遞給使用模板參數的函數?
因爲'T'被推斷爲'const char *',並且'節點'和'節點'是不同的類型 –
2014-12-19 10:01:58
我認爲編譯器給出的錯誤信息可以解釋。 – starrify 2014-12-19 10:02:15
如果你有C++ 14,你可以試試'「hi」s'。 – 2014-12-19 10:02:43