我正在尝试用Visual编译CSSTidy。
问题是它把
错误C2245:不存在的成员函数‘umap::擦除’指定为好友(成员函数签名不匹配任何重载)
指向
friend void umap<keyT,valT>::erase(const typename umap<keyT,valT>::iterator& it);它是在umap类中声明的迭代器类中的声明。
有人能告诉我,我应该深入到哪里去找出真正的问题所在吗?AFAIK源代码在MinGW中编译。
发布于 2010-10-04 22:41:16
修复,向前声明“类迭代器;”在类umap的顶部,并将“类迭代器”的推进移到类umap的底部。原因是,MickySoft VS似乎有一个缺陷,导致它无法识别umap::擦除在umap::iterator的驱动之下声明的。
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...]
}};发布于 2010-06-19 13:49:17
源代码在MinGW中编译
呃..。所以?
在编译内部类时,编译器是否可以看到umap擦除成员函数?
Billy3
https://stackoverflow.com/questions/3075697
复制相似问题