C ++模板:模板参数错误

时间:2011-11-16 14:43:50

标签: c++ templates

我有

    template <typename ConcContainer>
    class WebBrowsingPolicyData
    {
    public:
        typedef ConcContainer<std::shared_ptr<WBRuleDetails>>::iterator iterator;
    ...
    private:
    ConcContainer<std::shared_ptr<WBRuleDetails>> usersData_;
    CRITICAL_SECTION critSection

我收到了一行编译错误(错误6错误C2238:前面的意外令牌&#39;;&#39;)

typedef ConcContainer<std::shared_ptr<WBRuleDetails>>::iterator iterator

如何在模板中创建typedef?我一定错过了什么..

2 个答案:

答案 0 :(得分:3)

ConContainer本身就是一个模板,因此它需要是一个模板模板参数:

template <template <typename T> class ConcContainer>
class WebBrowsingPolicyData
{
public:
    typedef typename ConcContainer<std::shared_ptr<WBRuleDetails>>::iterator iterator;
};

答案 1 :(得分:0)

两种可能性:

  1. 编译器遇到>>问题。插入一个空格。请注意,如果您使用的是符合C ++ 11标准的编译器,那么这应该不是问题。
  2. 示例:

    typedef ConcContainer<std::shared_ptr<WBRuleDetails> >::iterator iterator;
    
    1. ConcContainer没有成员或typedef iterator。检查以确保它确实存在。
    2. 编辑:这不是最令人烦恼的解析。