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

C++ templates: template argument error

本文关键字:参数 错误 模板 c++      更新时间:2023-10-16

我有

    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:意外的token(s)前面的';')

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

如何在模板中定义类型?

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

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

两种可能:

  1. 编译器与>>有问题。插入空格。请注意,如果您使用的是c++ 11兼容的编译器,这应该不是问题。

的例子:

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

  1. ConcContainer没有成员或类型定义iterator。检查,以确保它确实是。

编辑:这不是最烦人的解析