2014-10-02 257 views
0

我試圖傳遞一個字符串作爲C++模板參數,但我似乎無法使其工作。爲了記錄,我正在使用SystemC庫(因此所有sc_xxx的東西)。據this answer,我在做什麼應該工作,但我不明白我做錯了什麼。編譯器告訴我, 「filePath不能出現在恆定的」 表情「。任何幫助,將不勝感激。在C++中傳遞字符串作爲模板參數

的main.cpp

int sc_main(int argc, char* argv[]) 
{ 
    const char filePath[] = "test.txt"; 
    Interconnect<sc_uint<32>, filePath, 10> myInterconnect; 


    return 0; 
} 

interconnect.h

template<class T, const char filePath[], unsigned nPortPairs = 10> 
SC_MODULE(Interconnect) 
{ 
public: 
... 
}; 
+0

那麼,你只駕駛一輛奧迪,從來沒有別的? – 2014-10-02 02:55:50

+0

是的,這是一個較舊的模型;我的第一輛也是唯一的車。 – audiFanatic 2014-10-02 02:57:17

回答

2

filePath是一個本地自動變量,因此它的地址是一個運行時的特性,模板需要一個在編譯時已知的地址,在C++ 03中也存在一個關於連接的問題;我不完全是但我認爲鏈接問題在C++ 11中得到修復。

一個簡單的解決方法是讓filepath成爲普通的構造函數參數。

0

我看到你在做什麼和你提供了一個鏈接的答案之間的兩個區別。

  1. 你的字符串常量是一個局部變量。在另一個答案中,它是一個全局變量。
  2. 您的模板參數是一個常量字符數組。在另一個答案它是一個const char *。

我的猜測是,你只需要消除這些差異。我發現another resource似乎證實了我的猜測。

相關問題