2014-10-02 72 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似乎证实了我的猜测。

相关问题