2014-10-20 47 views
2

使用與G ++下面的代碼:G ++錯誤預期的類型,有 '類名'

#include <iostream> 
#include <vector> 
typedef std::vector<int> array; 
typedef std::vector<array *> list; 


struct time{ 
    int beg; 
    int end; 
    time(){ 
    beg=0; 
    end=0; 
    } 
}; 

void explore(int v, std::vector<bool> & visited, list & l, std::vector<time> & times); 

int main() 
{ 
    return 0; 
} 

我得到的錯誤:

預期的類型,有 '時間'

模板參數2無效

隨着MSVC++ 2013一切ok。我究竟做錯了什麼?

+0

我找到答案:我必須添加'typedef結構時間「mytipe」'和所有作品 – aLLex 2014-10-20 16:46:24

回答

2

不幸的是,提供有g ++的<iostream>遞歸地包括C <time.h> header,它聲明函數time_t time(time_t*)。在解析模板實例化參數時,即使相應的模板參數是類型,函數標識符也優於類型名稱。

解決方法是編寫std::vector<struct time>,但使用名稱空間或使用C標準未使用的名稱可能會更好。