g ++错误:“预期的”在模板成员函数的正式参数之前

时间:2014-07-10 17:49:17

标签: linux g++

我在以下代码中遇到此错误:

#include <FWCacheEntry>

template<class T> class LoggerConfigCacheEntry : public FWCacheEntry<T>
{
public:
    LoggerConfigCacheEntry(FWCacheEntryData data) : FWCacheEntry<T>(data) //Error in this line
    {
        ResetCacheEntryScoreCounters();
    }

    ...
};

FWCacheEntry是:

template<class T> class FWCacheEntry
{
public:
    typedef T* FWCacheEntryData;

    FWCacheEntry(FWCacheEntryData data) 
    {
        _data = data;
    }

    ...
};

此代码在Solaris中完全编译,但在Linux中编译。我已经读过这个错误通常来自于引用未知的东西,但包含就在那里。

你能帮助我吗?

由于

1 个答案:

答案 0 :(得分:0)

我相信你需要:

  • 完全符合名称;
  • 添加typename关键字以明确告诉编译器它是一个类型但不是静态变量;

因此你需要改变:

LoggerConfigCacheEntry (FWCacheEntryData data)
        : FWCacheEntry <T> (data)

在:

LoggerConfigCacheEntry (typename FWCacheEntry <T>::FWCacheEntryData data)
        : FWCacheEntry <T> (data)

有很多相关的问题: