1

我有一个带有一些内联模板方法的头文件。我向它添加了一个类声明(只是几个静态方法......它更像是一个命名空间而不是一个类),并且我开始在使用该新类的文件中收到此编译错误。

还有其他几个包含相同 .h 文件的文件仍然可以毫无怨言地编译。

谷歌搜索错误给了我一堆邮件列表的链接,这些链接是关于具有类似错误消息的项目中的错误(唯一的区别似乎是构造函数、析构函数或类型转换应该在前面)。

我正准备开始剥离其他所有东西,直到我有一个最基本的最小样本,这样我就可以聪明地问这个问题,但我想我会先尝试以愚蠢的方式问它:

谁能给我一个关于此错误消息实际含义的基本线索,以便我可以开始追踪它/谷歌它?

只是为了完整起见,我看到的第一个例子看起来或多或少像

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

1 回答 1

8

这意味着您将“inline”关键字放在错误的位置。它需要在方法的返回类型之前,例如

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

就那么简单。

您在一个编译单元而不是其他编译单元上收到此消息的原因可能是因为它是一个模板化函数,没有从其他编译单元实例化。

一般来说,如果你得到一个“expected blah blah before foobar”错误,这是一个解析错误,它通常表示一个简单的语法错误,例如缺少分号、缺少大括号或错误的关键字。问题通常在提到的部分附近,但实际上可能是一段时间后,所以有时你必须寻找它。

于 2009-08-04T14:28:00.977 回答