下面输入的代码未编译

时间:2017-08-29 14:43:24

标签: c++

ng-repeat="data in  record | dateRange : 'invoice_date' : from : to"

抛出以下错误

  

错误:对'binary_function'的引用是不明确的prog18.cpp:38:34:   错误:'<'标记类cmplxData之前的预期模板名称:   binary_function {
                                    ^ prog18.cpp:38:34:错误:预期'{'在'<'标记之前prog18.cpp:38:34:错误:预期   '<'标记

之前的非限定标识

2 个答案:

答案 0 :(得分:2)

好的,鉴于评论中的信息,您正在做两件事:

  1. 您在某处包含了一个包含std::binary_function

  2. 定义的头文件
  3. 您也是using namespace std

  4. 这会导致歧义,因为编译器无法区分您的binary_functionstd::binary_function,现在也可以像binary_function那样进行调用。这就是您不应该使用using namespace anywhere

    的原因

    修复方法是将cmplxData的类声明重写为

    class cmplxData : ::binary_function<double, double, int>{ 
    

    这样您就可以::binary_function使用::std::binary_function而不是binary_function,并消除歧义。您正在显式调用在全局命名空间中声明的const enum

答案 1 :(得分:1)

您的班级模板binary_function会产生歧义,因为它已在std中定义,std::binary_function

您可以在另一个命名空间中添加自定义binary_function,使用完全限定名称空间,或只使用std::binary_function定义。