C ++在模板中显示构造函数重载错误
(std::__cxx11::string) [with T = std::__cxx11::basic_string<char>; std::__cxx11::string = std::__cxx11::basic_string<char>]cannot be overloaded
我试图在这里重载一个Template类构造函数。 扩展错误:
In file included from main.cpp:2:0:
dlist.h: In instantiation of class Sinwan::DList::DoublyLinkList<std::__cxx11::basic_string<char> >:
main.cpp:5:45: required from here
dlist.h:62:13: error:Sinwan::DList::DoublyLinkList<T>::DoublyLinkList(std::__cxx11::string) [with T = std::__cxx11::basic_string<char>; std::__cxx11::string = std::__cxx11::basic_string<char>] cannot be overloaded
DoublyLinkList(std::string dummyData_)
^
dlist.h:52:13: error: with Sinwan::DList::DoublyLinkList<T>::DoublyLinkList(T) [with T = std::__cxx11::basic_string<char>]
DoublyLinkList(T dummyData_)
我的.h文件中的代码:
DoublyLinkList(T dummyData_)
{
node = new Node;//dummy node
node->_next=NULL;
node->_prev=NULL;
node->_data=dummyData_;
head=node;
tail=node;
_iteratorObj=begin();
}
DoublyLinkList(std::string dummyData_)
{
node = new Node;//dummy node
node->_next=NULL;
node->_prev=NULL;
node->_data=dummyData_;
head=node;
tail=node;
_iteratorObj=begin();
}
Main.cpp的:
#include<iostream>
#include "dlist.h"
int main()
{
Sinwan::DList::DoublyLinkList<std::string>::Iterator it;
Sinwan::DList::DoublyLinkList<std::string> listObj("0");
}
如果我将std :: string更改为int,它可以正常工作。任何人都可以帮我指出prblm ??
答案 0 :(得分:0)
我们仍然没有Minimal, Complete, and Verifiable Example,但至少可以猜测这个问题。
假设T
是一个类模板参数,那么如果你有DoublyLinkList<std::string>
,那么类型T
将是std::string
,你就会有两个< / em>构造函数以std::string
为参数。你不能拥有它,如果你重载一个函数(构造函数或其他),必须有不同的签名。
你可能不应该让构造函数采用明确的std::string
参数。