2013-04-04 50 views
0

具体细节:C++模板:可以/如何使用结构作为模板的实例化类型?

我想有下面的结构

struct edgeT {  
    string home;  
    string away;  
    int weight; 
}; 

再有型edgeT的优先级队列。

我写了一个快速程序来测试优先级队列,但我收到以下错误消息。

模板类minPQ“为模板参数'使用本地型 '的Main():: edgeT'

我刚才定义

/宣称在main()例程开始时的结构。

该结构是否必须在其他地方定义?

+0

你能告诉我们你是如何试图使用'minPQ'和错误是哪一行吗? – 2013-04-04 15:06:14

+0

您错过了'edgeT'的一个严格的弱排序比较器,但是您引用的错误指向了另一个错误。 – juanchopanza 2013-04-04 15:07:29

+0

将'edgeT'的定义移动到'main'之外(它看起来像您可能错误地将它命名为'Main',C++区分大小写)。或者,如果您使用的是gcc,请尝试使用'-std = C++ 11'开关进行编译。 – Praetorian 2013-04-04 15:08:51

回答

1

只有从C++ 11开始,才能使用函数中定义的类型作为模板参数。要么使用C + 11,要么将结构定义放在命名空间范围内。