テンプレート関数 s.t.を使用している間にリンクされたリストについていくつかの機能を実行しました。 intとstringの両方の好きなリストを扱うことができます。 指定した場所(ex 0,5)に値を挿入する場合は、値0の0番目の位置に挿入します。 val_transportを使用して、リンクリストに挿入する値とテンプレート関数のT * headを渡す頭から指定した値を挿入したい場所の直前のノードまで。テンプレートタイプ変換エラーでリンクされたリスト
int add_pos, add_int;
string add_str;
void main_function_insert_at()
{
cout << "Enter the position you want to addnode and its value :";
if (type)
{
node < int> val_transport;
cin >> add_pos >> add_int;
val_transport.value = add_int;
int_head = insert_at(int_head, add_pos, val_transport);
}
else
{
node <string> val_transport;
cin >> add_pos >> add_str;
val_transport.value = add_str;
str_head = insert_at(str_head, add_pos, val_transport);
}
}
template < typename T >
T* insert_at(T* head, int pos, T val_transport)
{
T* cur = head;
for (int i = 0; i < pos - 1; i++)
{
cur = cur->next;
}
if (type)
{
node <int>*newnode=NULL;
newnode = new node <int> ;
newnode->value = val_transport.value;
cur->next = newnode;
newnode->next = cur->next->next;
}
else
{
node <string>*newnode=NULL;
newnode = new node <string> ;
newnode->value = val_transport.value;
cur->next = newnode;
newnode->next = cur->next->next;
}
}
しかし、私のテンプレート機能では、 のようなエラーが、このような
エラー4エラーC2440としてラインで何度も何度も示しておくです:「=」:「にノード*」から変換することはできません'ノード*'から 'ノード*'に変換できません。 エラー6エラーC2440: '=': 'ノード*'から 'ノード*'に変換できません
エラー3エラーC2440: '=': 'ノード*'から 'ノード*'に変換できません
エラー7エラーC2440: '=': 'ノード*'から 'ノード*'に変換できません
エラー5エラーC2440: '=':f rom 'std :: string' to 'int'
これらは同じ問題のようです。
私はテンプレートがintとstringのような他の型を受け入れることができると思います。 しかし明らかに、私は間違っています。 誰かがそのアイデアを持っていますか?おかげで私は台湾CSにしてから新しいですので、私の悪い英語のための
**申し訳ありませんがたくさん:P
はSOへようこそ。 [ask]を見てください。 [mcve]を投稿するのが最善です。 –
実行時にリストのタイプを選択することはできません。 – molbdnilo
@molbdnilo私は、演算子オーバーロードを試してみましたが、また失敗し、他のオプションが存在しません、ありがとう:D – Alfons