簡體   English   中英

錯誤:“xxx”之前的預期嵌套名稱說明符

[英]error: expected nested-name-specifier before 'xxx'

編譯“錯誤:預期的嵌套名稱說明符之前”時出現錯誤

代碼是

 using range = std::pair<float,float> ;
 range make_range( float a, float b ) { return { std::min(a,b), std::max(a,b) } ; }
 bool intersects( range a, range b )
 {
    if( a > b ) std::swap(a,b) ;
    return a.second >= b.first ;
 }

我正在使用 Ubuntun 12.04、GCC 4.6 和 CodeBlocks 10.05

我在一個文件中創建了這個:

 #include <utility>
 #include <algorithm>
 #include <iostream>

 using range = std::pair<float,float> ; 

 range make_range( float a, float b ) { return { std::min(a,b), std::max(a,b) } ; }

 bool intersects( range a, range b )
 {
    if( a > b ) std::swap(a,b) ;
    return a.second >= b.first ;
 }

 int main()
 {
   float x =1.0;
   float y =10.0;
   range pair_1 = make_range( x, y);
   range pair_2 = make_range(-2, 6);

   bool brs = intersects( pair_1, pair_2 );
   std::cout<<std::get<0>(pair_1)<<"  "<<std::get<1>(pair_1)<<std::endl;
   std::cout<<std::get<0>(pair_2)<<"  "<<std::get<1>(pair_2)<<std::endl;
   std::cout<<brs<<std::endl
   return 0;
 }  

並使用g ++ -std = c ++ 11 program_name.cc進行編譯和運行,沒有任何問題。

嘗試這個:

#include<tuple>
#include<algorithm>

using range = std::pair<float, float>;
range make_range(float a, float b) { return{ std::min(a, b), std::max(a, b) }; }
bool intersects(range a, range b)
{
    if (a > b) std::swap(a, b);
    return a.second >= b.first;
}

也許您的意思是:

typedef std::pair<float,float> range;

請記住使用C ++ 11(否則您將得到警告:擴展的初始化程序列表僅在-std = c ++ 11或-std = gnu ++ 11中可用)

不是因為頭文件,可能是因為c++版本不是c++11(嘗試設置編譯選項為-std=c++11)

暫無
暫無

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

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