Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 重载类定义之外的运算符_C++ - Fatal编程技术网

C++ 重载类定义之外的运算符

C++ 重载类定义之外的运算符,c++,C++,我想重载操作符-,以给出作为参数传递的两个迭代器之间的距离 我的类是一个列表,我的列表中嵌套了迭代器类 我似乎无法得到函数的正确形式。我还没有机会检验尸体。我对函数的主要问题是如何定义它 size_t operator-(template <class T> typename mylist<T>::iterator a, template <class T> typename mylist<T>::iterator b) { size_t

我想重载
操作符-
,以给出作为参数传递的两个迭代器之间的距离

我的类是一个列表,我的列表中嵌套了迭代器类

我似乎无法得到函数的正确形式。我还没有机会检验尸体。我对函数的主要问题是如何定义它

size_t operator-(template <class T> typename mylist<T>::iterator a, template <class T> typename mylist<T>::iterator b) {
    size_t i = 0;
    while(a.node != b.node) {
        ++a;
        ++i;
    }
    return i;
}
size\t运算符-(模板类型名mylist::迭代器a,模板类型名mylist::迭代器b){
尺寸i=0;
while(a.node!=b.node){
++a;
++一,;
}
返回i;
}

正确的定义如下:

template <class T>
size_t operator-(const mylist<T>::iterator& a, const mylist<T>::iterator& b) {
   ... put logic here... 
}

正确的定义应该是这样的:

template <class T>
size_t operator-(const mylist<T>::iterator& a, const mylist<T>::iterator& b) {
   ... put logic here... 
}

正确的定义应该是这样的:

template <class T>
size_t operator-(const mylist<T>::iterator& a, const mylist<T>::iterator& b) {
   ... put logic here... 
}

正确的定义应该是这样的:

template <class T>
size_t operator-(const mylist<T>::iterator& a, const mylist<T>::iterator& b) {
   ... put logic here... 
}

你应该研究如何正确地使用它

模板
空函数(常数T&T){…}

您应该研究如何正确使用

模板
空函数(常数T&T){…}

您应该研究如何正确使用

模板
空函数(常数T&T){…}

您应该研究如何正确使用

模板
空函数(常数T&T){…}
模板
大小运算符-(typename mylist::iterator a,typename mylist::iterator b)
{
尺寸i=0;
while(a.node!=b.node){
++a;
++一,;
}
返回i;
}

模板
size_t运算符-(迭代器&a,常量迭代器&b)
{
尺寸i=0;
while(a.node!=b.node){
++a;
++一,;
}
返回i;
}
请注意迭代器上没有更改的引用和常量(如果不想更改,则可能不想通过引用进行传递)。

模板
大小运算符-(typename mylist::iterator a,typename mylist::iterator b)
{
尺寸i=0;
while(a.node!=b.node){
++a;
++一,;
}
返回i;
}

模板
size_t运算符-(迭代器&a,常量迭代器&b)
{
尺寸i=0;
while(a.node!=b.node){
++a;
++一,;
}
返回i;
}
请注意迭代器上没有更改的引用和常量(如果不想更改,则可能不想通过引用进行传递)。

模板
大小运算符-(typename mylist::iterator a,typename mylist::iterator b)
{
尺寸i=0;
while(a.node!=b.node){
++a;
++一,;
}
返回i;
}

模板
size_t运算符-(迭代器&a,常量迭代器&b)
{
尺寸i=0;
while(a.node!=b.node){
++a;
++一,;
}
返回i;
}
请注意迭代器上没有更改的引用和常量(如果不想更改,则可能不想通过引用进行传递)。

模板
大小运算符-(typename mylist::iterator a,typename mylist::iterator b)
{
尺寸i=0;
while(a.node!=b.node){
++a;
++一,;
}
返回i;
}

模板
size_t运算符-(迭代器&a,常量迭代器&b)
{
尺寸i=0;
while(a.node!=b.node){
++a;
++一,;
}
返回i;
}

注意迭代器上没有更改的引用和常量(如果不想更改,您可能不想通过引用传递)。

如果我想随后将此运算符用于
列表
函数,我必须添加什么?因为事实上,我仍然得到一个无效的操作数错误。@Dochevsky什么是列表函数?我的意思是列表类中的函数。所以我有
模板类列表{class迭代器{/*…*/};迭代器插入(迭代器,T);/*…*/}我正在尝试在我的
插入
函数中使用
-
操作数。如果我想随后将此运算符用于
列表
函数,我必须添加什么?因为事实上,我仍然得到一个无效的操作数错误。@Dochevsky什么是列表函数?我的意思是列表类中的函数。所以我有
模板类列表{class迭代器{/*…*/};迭代器插入(迭代器,T);/*…*/}我正在尝试在我的
插入
函数中使用
-
操作数。如果我想随后将此运算符用于
列表
函数,我必须添加什么?因为事实上,我仍然得到一个无效的操作数错误。@Dochevsky什么是列表函数?我的意思是列表类中的函数。所以我有
模板类列表{class迭代器{/*…*/};迭代器插入(迭代器,T);/*…*/}我正在尝试在我的
插入
函数中使用
-
操作数。如果我想随后将此运算符用于
列表
函数,我必须添加什么?因为事实上,我仍然得到一个无效的操作数错误。@Dochevsky什么是列表函数?我的意思是列表类中的函数。所以我有
模板类列表{class迭代器{/*…*/};迭代器插入(迭代器,T);/*…*/}我试图在我的
插入
函数中使用
-
操作数。
template <class Iterator>
size_t operator-(Iterator & a, const Iterator & b) 
{
    size_t i = 0;
    while(a.node != b.node) {
        ++a;
        ++i;
    }
    return i;
}