标签: operator-keyword

如何为双向迭代器定义operator <?

如何为双向迭代器定义operator <?(list :: iterator)

(我想用list而不是vector.)

c++ iterator bidirectional operator-keyword

2
推荐指数
1
解决办法
405
查看次数

关于随机访问迭代器的运算符+重载的问题,在模板中

我想在列表类中重载迭代器的"+"运算符,类似于

list<double>::iterator operator+(const list<double>::iterator& it, int n)
Run Code Online (Sandbox Code Playgroud)

这很好用.但是,当我尝试将其实现为模板时,就像

template<class T>
typename list<T>::iterator operator+(const typename list<T>::iterator& it, int n)
Run Code Online (Sandbox Code Playgroud)

我收到错误信息,如,

no match for 'operator+' in 'it + small_index'
Run Code Online (Sandbox Code Playgroud)

无法弄清楚原因......

代码附在下面,

#include<iostream>
#include<list>
using namespace std;

template<class T>
ostream& operator<< (ostream& os, const list<T>& l)
{
  typename list<T>::const_iterator i = l.begin();
  for (;i!=--l.end();i++)
    os<<*i<<";";
  os<<*i<<endl;
  return os;
}

template<class T> //this is where it goes WRONG.
                  //If don't use template, delete "typename", T->double, runs well
typename list<T>::iterator operator+(const typename list<T>::iterator& it, int …
Run Code Online (Sandbox Code Playgroud)

c++ templates iterator overloading operator-keyword

2
推荐指数
1
解决办法
553
查看次数

类型的无效操作数 - c ++

我在c ++代码上有一个名为ThreeDigits的类.我重载了+操作数,这样:

ThreeDigits* ThreeDigits::operator+(const ThreeDigits &number) const

{
   double result= getNumber()+number.getNumber();
   ThreeDigits* new_result=new ThreeDigits(result);
   return new_result;
}
Run Code Online (Sandbox Code Playgroud)

但是当我写主要功能时:

    ThreeDigits* first=new ThreeDigits(2.55998);
    ThreeDigits* second=new ThreeDigits(5.666542);
    ThreeDigits* result=first+second;
Run Code Online (Sandbox Code Playgroud)

我收到以下编译错误:类型为ThreeDigits*和ThreeDigits*的无效操作数为二元运算符+

你能告诉我这是什么问题吗?谢谢

c++ overloading operator-keyword

2
推荐指数
1
解决办法
3030
查看次数

运算符//在JavaScript中:5.0 // 2.0 = 5?

//JavaScript中是否有运算符?

因为在Python中我们有:

5 // 2.0 # => 2.0
5 / 2.0  # => 2.5
Run Code Online (Sandbox Code Playgroud)

所以我尝试用JavaScript:

5.0//2.0 
Run Code Online (Sandbox Code Playgroud)

我得到了5!那里发生了什么?

我读到//JavaScript中没有运算符这样的东西.在这种情况下,为什么我没有得到异常,或者更好的是来自词法分析器的错误?

我用过这一行:

document.write(eval("5.0//2.0"));
Run Code Online (Sandbox Code Playgroud)

在Firefox 3.6.23中.

javascript operator-keyword

2
推荐指数
1
解决办法
454
查看次数

C++中奇怪的赋值/乘法运算符行为

有人可以解释我运营商的错误:

Matrix3D Matrix3D::operator*(Matrix3D& m) {
    Matrix3D ret;
    for(int i=0;i<4;i++) {
        for(int j=0;j<4;j++) {
            ret._data[i][j]=0.0;
            for(int k=0;k<4;k++) {
                ret._data[i][j] += (this->_data[i][k]*m._data[k][j]);
            }
        }
    }
    return ret;
}

Matrix3D& Matrix3D::operator=(Matrix3D& m) {
    if(this==&m) {
        return *this;
    }
    for(int i=0;i<4;i++) {
        for(int j=0;j<4;j++) {
            this->_data[i][j] = m._data[i][j];
        }
    }
    return *this;
}

Matrix3D Matrix3D::Rotation(double ax, double ay, double az) {
    Matrix3D rotX;
    Matrix3D rotY;
    Matrix3D rotZ;
    rotX(
        1,          0,          0,          0,
        0,          cos(ax),    -sin(ax),   0,
        0,          sin(ax),    cos(ax),    0,
        0,          0,          0,          1 …
Run Code Online (Sandbox Code Playgroud)

c++ multiplication variable-assignment operator-keyword

2
推荐指数
2
解决办法
303
查看次数

在大项目上复制赋值操作符内存泄漏

过去几个月我一直在做一个大项目.现在我终于完成了那个项目.但在我的复制赋值操作符中,我有内存泄漏.Valgrind表明它是泄漏的data_的原始值.

这是我的复制赋值操作符代码.

Value& Value::operator=(const Value& r)
{
  data_ = copy(r.data_);
  delete data_; 
  return *this;
}
Run Code Online (Sandbox Code Playgroud)

有谁可以帮我解决这个问题?我真的很感激.

c++ memory-leaks copy variable-assignment operator-keyword

2
推荐指数
1
解决办法
77
查看次数

鼠标悬停在调试时在Visual Studio中的operator - >()之后查看字段

我有一个小班: -

class A{   public:int aField;   }
Run Code Online (Sandbox Code Playgroud)

下面,在调试时,如果我将鼠标悬停aField在其中a->aField,Visual Studio将很好地弹出该字段的值(就像一个小手表).

A* a=new A();
a->aField=1234;   
    //^ hover here
Run Code Online (Sandbox Code Playgroud)

然后我升级了代码以覆盖operator->: -

class APtr{ //my custom smart pointer
    A* ptr;
    A* operator->(){ return ptr; }
}

APtr a; 
.....
a->aField=1234;
   //^ hover here
Run Code Online (Sandbox Code Playgroud)

没有弹出窗口了.(有一个弹出窗口a,但不是为了aField)
如何使可爱的弹出窗口再次出现?

编辑(Bounty reason): "user1610015"提供了一个可行的解决方案,但我认为可能有一个更方便的解决方案(只有一点可以帮助).一个新的解决方案甚至可以建议我使用一些插件或其他IDE.

编辑2:
这是我想要的可爱弹出窗口的一个例子.
它之后不适用于该领域operator->.

在此输入图像描述

c++ pointers operator-keyword visual-studio-2015

2
推荐指数
1
解决办法
250
查看次数

bash中$ [ab]和$((ab))之间的差异

我不知道这个运算符$ []并且找不到它的相关信息.但是我知道接下来的两个代码会给出相同的输出

a=4
b=1
echo $[a-b] # => 3
Run Code Online (Sandbox Code Playgroud)

a=4
b=1
echo $((a-b)) # => 3
Run Code Online (Sandbox Code Playgroud)

那么$ []运算符是什么,与$(())有什么区别?

在我的zsh shell提示符中,当我打开它们中的任何一个并且没有关闭它们时,我写了mathsubst.

math bash operator-keyword

2
推荐指数
1
解决办法
1355
查看次数

在Ruby中,铲运算符(<<)如何处理两个整数?

我是初学者/中级Ruby学习者,我跑了一些我不理解的东西.我查看了stackoverflow,但找不到一个清晰,简洁的答案,这就是为什么我要创建一个新问题.

如果给出数字a和b,当r等于时,结果是什么r:

a << b 
Run Code Online (Sandbox Code Playgroud)

特别是,我正在寻找一个表示三个变量之间关系的通用方程.此外,深入了解Ruby如何在引擎盖下工作是受欢迎的,但次要的.

仅供参考,我在" https://repl.it/languages/ruby " 使用repl.it.

提前致谢!

编辑:<<通常被称为二进制或按位左移运算符.根据Andrey Deineko的EDIT2:这个问题与顶部列出的其他帖子不同,因为在另一篇文章中,没有明确,简明的答案如何运作.它简单地说它是一个按位左移位运算符,并显示了一些使用该方法的输出示例.特别是,我一直在寻找它如何在整数或fixnums上工作.似乎另一篇文章是关于运营商的一般用途.重申一下,这个问题是不同的,因为它特别适用于它如何在整数上工作,因此,下面的答案更详细地说明它如何在二进制级别上工作.

ruby integer operator-keyword

2
推荐指数
1
解决办法
478
查看次数

Javascript?运算符:如何传递多个参数

编辑:我必须使这项工作在IE11上

我有以下代码:

span.classList.add(span.textContent === '\ ' ? 'char' : 'spaceChar')
Run Code Online (Sandbox Code Playgroud)

它工作正常,但我想添加2个类以防万一,如下所示:

span.classList.add(span.textContent === '\ ' ? 'char','animated' : 'spaceChar')
Run Code Online (Sandbox Code Playgroud)

我尝试使用方括号,但没有运气:

span.classList.add(span.textContent === '\ ' ? ('char','animated') : ('spaceChar'))
Run Code Online (Sandbox Code Playgroud)

有什么办法可以做到这一点?谢谢

javascript if-statement ternary-operator operator-keyword

2
推荐指数
1
解决办法
47
查看次数