【发布时间】:2018-03-11 08:57:24
【问题描述】:
C++ 在模板中显示构造函数重载错误
(std::__cxx11::string) [with T = std::__cxx11::basic_string<char>; std::__cxx11::string = std::__cxx11::basic_string<char>]cannot be overloaded
我试图在这里重载一个模板类构造函数。 扩展错误:
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??
【问题讨论】:
-
这不可能是完整的错误。请复制粘贴完整且完整的错误输出,包括可能的信息说明。然后请在Minimal, Complete, and Verifiable Example 中标出错误所在的位置,例如用评论。