簡體   English   中英

(std::__cxx11::string) [T = std::__cxx11::basic_string<char> ; std::__cxx11::string = std::__cxx11::basic_string<char> ] 不能重載

[英](std::__cxx11::string) [with T = std::__cxx11::basic_string<char>; std::__cxx11::string = std::__cxx11::basic_string<char>] cannot be overloaded

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();
} 

主.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嗎?

我們仍然沒有最小、完整和可驗證的示例,但至少可以猜測問題。

假設T是一個類模板參數,那么如果您有DoublyLinkList<std::string>那么類型T將是std::string ,並且您將有兩個構造函數將std::string作為參數。 你不能這樣,如果你重載一個函數(構造函數或其他),它必須有不同的簽名。

您可能不應該讓構造函數采用顯式std::string參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM