// 代码如下:
#pragma once
template<typename _T>
class list_node
{
public:
_T Data;
bool bValid;
list_node<_T> *pPrev;
list_node<_T> *pNext;
list_node() {}
~list_node() {}
};
template<typename _DATA, typename _NODE=list_node<_T_DATA>>
class list_iterator
{
public:
list_iterator() { _ptr = NULL; }
~list_iterator() {}
_NODE* _ptr;
list_iterator<_DATA, _NODE>& operator++()
{
_ptr = _ptr->pNext;
return *this;
}
};
class list_test
{
public:
list_test() {}
~list_test() {}
};
struct CData
{
CData() {}
CData(int a){x = a;}
~CData() {}
int x;
};
int main()
{
list_iterator<CData, list_node<CData>> it2;
it2++;
}
程序报如下错误:
1>------ 已启动生成: 项目: LinkTest, 配置: Debug Win32 ------
1> LinkTest.cpp
1>d:\work\linktest\test1.h(50): error C2676: 二进制“++”:“list_iterator<CData,list_node<CData>>”不定义该运算符或到预定义运算符可接收的类型的转换
====生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ====
问题:明明定义了 operator++(),为什么没有定义?