2009-08-04 47 views
1

我有一個頭文件,帶有一些內聯模板方法。我添加了一個類聲明(僅僅是一些靜態方法......它更像是一個名稱空間而不是類),並且我開始在使用這個新類的文件中得到這個編譯錯誤。(C++和gcc)錯誤:期望的構造函數,析構函數或類型轉換之前'inline'

還有幾個其他文件包含相同的.h文件,仍然可以毫無怨言地進行編譯。

谷歌搜索的錯誤給了我一大堆郵件列表鏈接到有類似錯誤信息(似乎是構造函數,析構函數或類型轉換應該在之前的唯一區別)的項目上的錯誤。

我即將開始剝離其他所有東西,直到我有一個裸露的最小樣本,所以我可以聰明地問這個問題,但我覺得我會先試探它愚蠢的方式:

任何人都可以給我一個關於這個錯誤消息實際上是什麼的基本線索意味着所以我可能能夠開始追蹤它/谷歌呢?

只是爲了完整起見,我看到這其中的第一個例子看上去或多或少像

namespace Utilities 
{ 
    template <typename T> GLfloat inline NormalizeHorizontally(T x) 
    { 
     GLfloat scaledUp = x*2.0; 
     GLfloat result = scaledUp/Global::Geometry::ExpectedResolutionX; 
     return result; 
    } 
} 

回答

8

這意味着,你把「內聯」關鍵字在錯誤的地方。它需要在方法的返回類型之前執行,例如

template <typename T> inline GLfloat NormalizeHorizontally(T x) 

那樣簡單。

您在一個編譯單元中獲得此消息而不是其他人的原因可能是因爲它是一個模板化函數,未從其他編譯單元實例化。

通常,如果您在「foobar之前」出現「期望的等待」錯誤,這是一個解析錯誤,它通常表示一個簡單的語法錯誤,例如缺少分號,缺失大括號或錯誤的關鍵字。問題通常出現在提到的部分的某個地方,但實際上可能會回來一段時間,所以有時您必須尋找它。

+0

打了我一分鐘......(現在刪除我的答案) – Zifre 2009-08-04 14:30:34

相關問題