Связанный список, увеличивающий количество узлов

Я хочу увеличить количество узлов, но получаю следующую ошибку. Как я могу решить проблему?

error C2664: 'node<T>::node(const T &,const T &,const T &,node<T> *)' : cannot convert parameter 1 from 'char' to 'const std::string &'
        with
      [
1>              T=std::string
1>          ]
1>          Reason: cannot convert from 'char' to 'const std::string'
1>          No constructor could take the source type, or constructor overload resolution was ambiguous
1>          yeni.cpp(21) : see reference to function template instantiation 'void f<std::string>(T)' being compiled
1>          with
1>          [
1>              T=std::string
1>         ]

Класс узла

#ifndef NODE_CLASS
#define NODE_CLASS

#ifndef NULL
#include <cstddef>
#endif  // NULL

// linked list node
template <typename T>
class node
{
   public:
      T nodeValue,nodeValue2,nodeValue3;      // data held by the node
      node<T> *next;    // next node in the list

      // default constructor with no initial value
      node() : next(NULL)
      {}

      // constructor. initialize nodeValue and next
      node(const T& item, const T& item2, const T& item3, node<T> *nextNode = NULL) : 
              nodeValue(item),nodeValue2(item2),nodeValue3(item3), next(nextNode)
      {}
};


#endif   // NODE_CLASS

    #include <iostream>
    #include <string>
    #include "d_node.h"

    using namespace std;

    template<typename T>
    void f(T s){
        node <T>*front=NULL;
        front=new node<T>(s[0],s[1],s[2]);

    }

main.cpp

     int main() {

            string string;

            cout << "Enter the string:";
            cin >>string;

            f(string);

            return 0;
        }

1 ответ

Вы передаете аргументы типа char конструктору, который ожидает аргументы типа const T&в этом случае с T = std::string, Там нет конструктора в std::stringкласс, который принимает один символ в качестве аргумента, поэтому неявное преобразование не может произойти.

Поэтому компилятор выбрасывает

Reason: cannot convert from 'char' to 'const std::string'
1> No constructor could take the source type,

на тебя.

Другие вопросы по тегам