[英]“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.