繁体   English   中英

“指定为朋友的不存在的成员函数”-?

[英]“non-existent member function specified as friend” -?

我正在尝试使用Visual Studio编译CSSTidy。

问题是它抛出

错误C2245:指定为朋友的成员函数'umap :: erase'不存在(成员函数签名与任何重载都不匹配)

指向

friend void umap<keyT,valT>::erase(const typename umap<keyT,valT>::iterator& it);

这是在umap类中声明的迭代器类中的声明。

谁能告诉我应该去哪里弄清楚问题出在哪里? AFAIK源代码在MinGW中编译...

该修复程序,向前声明“类迭代器”; 在类umap的顶部,并将“类迭代器”的impl移到类umap的底部。 MickySoft VS似乎有一个缺陷,导致其无法识别在umap :: iterator的隐含之下声明的umap :: erase。

template <class keyT, class valT>
class umap 
{
    typedef map<keyT,valT> StoreT;
    typedef std::vector<typename StoreT::iterator> FifoT;
private:
    FifoT sortv;
    StoreT content;

public:

    class iterator;

    [...snip...]

  void erase(const typename umap<keyT,valT>::iterator& it)
  {
   content.erase(*it.pos);
   sortv.erase(it.pos);
  }

    [...snip...]

    // Iterator

    class iterator
    {
    [...snip...]
    }};

MinGW中的源代码编译

嗯...

编译内部类时,编译器是否有umap擦除成员函数可见?

Billy3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM