标签: operator-keyword

为什么我不能重载operator =?

我想让以下代码工作:

Mylist lst;
vector<int> v = lst;
Run Code Online (Sandbox Code Playgroud)

所以我看到我需要将列表转换为矢量.我试过这段代码:

vector<int> operator=(vector<int> v, const List & l) {
    return v; // more profound stuff later :-)
}
Run Code Online (Sandbox Code Playgroud)

(把它放在课外).不幸的是Visual Studio抛出了我:"错误:'operator ='必须是成员函数".我不明白 - 我该怎么办?我不能把这个功能放在矢量类中......你可以帮帮我吗?谢谢!

c++ operator-overloading assignment-operator implicit-conversion operator-keyword

0
推荐指数
1
解决办法
233
查看次数

Java中的点运算符和静态关键字

程序员大家好.我有一个关于静态的问题和在Java中使用这个例子的点运算符.

所以我在Inventory类中有一个ArrayList的类变量声明.

static List<Multimedia> list = new ArrayList<Multimedia>();
Run Code Online (Sandbox Code Playgroud)

如果我选择在方法中使用ArrayList的add方法,我应该像这样编写方法调用:Inventory.list.add(Object o)或者我应该使用list.add(Object o).他们的意思是一样的吗?如果不是,我应该使用哪种方法调用?

java static arraylist operator-keyword

0
推荐指数
1
解决办法
1725
查看次数

错误c6277在C++中重载&&

在我班上我有成员职能:

const bool operator&&(const KinematicVariable &right) const { 
        return this->isUsed() && right.isUsed(); 
}
inline const bool isUsed() const { return this->_used; }
Run Code Online (Sandbox Code Playgroud)

然后我试试

if (k1 && k2 && k3)
Run Code Online (Sandbox Code Playgroud)

但我明白了

error: C2677: binary '&&' : no global operator found which takes type 
'KinematicVariable' (or there is no acceptable conversion)
Run Code Online (Sandbox Code Playgroud)

c++ overloading operator-keyword

0
推荐指数
1
解决办法
81
查看次数

重载operator <<来改变成员变量

我有一个看起来像这样的类:

class A {
  public:
    A() {};
    A& operator<< (A& a, unsigned int i);

  private:
    vector<int> abc;
}
Run Code Online (Sandbox Code Playgroud)

我想提供abc使用运算符添加对象的功能:

A a();
a << 3,4,5; // should do the same as several calls of abc.push_back(i)
Run Code Online (Sandbox Code Playgroud)

我知道我必须超载<<操作员,我是否还要超载,操作员?

实际方法怎么样?

c++ class operator-keyword

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

矢量值不能永久保存[C++ Rookie]

我覆盖了一个+运算符:

Matrix& Matrix::operator+(Matrix m1)
{
    //This should never be triggered
    if(this->data.capacity() != m1.data.capacity() || this->data[0].capacity() != m1.data[0].capacity())
    {
        cout << "Dimensions don't match, can't add.\n";
        throw 7;
    }
    vector<vector<double>> result;
    result.resize(m1.data.capacity());
    for(int i = 0; i < m1.data.size(); i++)
    {
        result[i].resize(m1.data[0].size());
        for(int j = 0; j < m1.data[0].size(); j++)
        {
            result[i][j] = m1.data[i][j] + this->data[i][j];
        }
    }
    return Matrix(m1.getRows(),m1.getCols(), result);
}
Run Code Online (Sandbox Code Playgroud)

这是相应的构造函数:

Matrix::Matrix(int rows, int cols, vector<vector<double>> data)
{
    this->rows = rows;
    this->cols = cols;
    this->data = data;
}
Run Code Online (Sandbox Code Playgroud)

这是执行代码: …

c++ memory-management operator-keyword

0
推荐指数
1
解决办法
86
查看次数

三元运算符的PHP错误?

function foo() {
    return $result = bar() ? $result : false;
}

function bar() {
    return "some_value";
}

foo();
Run Code Online (Sandbox Code Playgroud)

注意:未定义的变量:结果

这是一个错误吗?

bar()应该保存到$ result,但它不会.但是条件工作正常并且它试图返回$ result或false语句(如果bar()为NULL或false)

PHP 5.4.24

php ternary operator-keyword

0
推荐指数
1
解决办法
508
查看次数

为什么没有一元运算符来获得乘法逆?0-x = -x ... 1 / x =?

在C / C ++中,有一元减号运算符,它返回算术类型的加法逆(至少在大多数情况下),即

int x = 2, y = 2;
assert(x + (-x) == 0);
Run Code Online (Sandbox Code Playgroud)

从数学的角度来看,编写-x或0-x无关紧要,但是从程序员的角度来看,确实如此。通常,用于评估-x的指令序列与用于评估0-x的指令序列不同!尽管只是语法糖,但在C ++中使用一元减运算符确实有意义。那么一元运算符是否返回乘法逆,不是吗?但是,为什么C ++(像许多(大多数?所有?)语言一样)缺少这样的运算符?

编辑:

我的主要观点是,计算数字x的逆数(加法或乘法)不需要计算机处理中性元素(分别为0或1)。实际上,0和1对于计算机而言并非无关紧要的实体。对于浮点类型(例如C中的float或double),虽然评估0.0-x或1.0 / x相当“简单”(此处精度仍然是一个大问题),但总体上它可能变得相当复杂。喜欢多。精度浮点类型0.0-x比-x复杂得多,因此-x不仅方便,而且生成更有效的代码。另一方面,必须引入像inv(x)或x.inv()之类的函数或通过乘法实现相同的功能(乘法逆),而不是仅仅为1.0 / x编写/ x ...

c++ operator-keyword

0
推荐指数
1
解决办法
412
查看次数

int*p =&a ++和int*p =&+ a

代码很简单,我只想测试&和++之间的优先级.

int main()
{
    int a=10;
    int *p;
    int *q;
    p=&++a;//error: lvalue required as unary ‘&’ operand
    q=&a++;//error: lvalue required as unary ‘&’ operand
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

gcc编译它时,出现了两个错误.在我看来,这a++是一个正确的值,但它++a是一个左值,因此在使用&获取它时,它不应该是一个错误,

c operator-keyword

0
推荐指数
1
解决办法
354
查看次数

C++嵌套条件运算符的评估顺序

对于像这样的表达式

x = a ? b : c ? d : e;
Run Code Online (Sandbox Code Playgroud)

我理解,因为?:运算符具有正确的关联性,所以表达式被分组为

x = a ? b : (c ? d : e);
Run Code Online (Sandbox Code Playgroud)

但是,评估顺序呢?结合性是否意味着首先评估(c?d:e)分支,然后它的答案作为参数传递给左?:运算符?或者首先进行评估,然后根据返回b或评估(c?d:e)分支?还是未定义?

c++ evaluation conditional operator-keyword

0
推荐指数
1
解决办法
249
查看次数

在Haskell中重载全局&&运算符无法编译

我有一个hs文件,试图重载&&运算符

(&&)::Bool->Bool->Bool
True && x = x
False && _ = False

and' :: (Bool)->Bool
and' xs=foldr (&&) True xs
Run Code Online (Sandbox Code Playgroud)

在Prelude中导入时,出现错误:

Ambiguous occurrence ‘&&’
It could refer to either ‘Main.&&’, defined at D:\baby.hs:2:6
                      or ‘Prelude.&&’,
                         imported from ‘Prelude’ at D:\baby.hs:1:1
                         (and originally defined in ‘GHC.Classes’)
Run Code Online (Sandbox Code Playgroud)

所以我改变了最后一行

and' xs=foldr (Main.&&) True xs
Run Code Online (Sandbox Code Playgroud)

现在它打印新的错误消息:

Couldn't match expected type ‘t0 Bool’ with actual type ‘Bool’
In the third argument of ‘foldr’, namely ‘xs’
In the expression: foldr (Main.&&) True xs
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?谢谢.

parsing haskell overloading operator-keyword

0
推荐指数
1
解决办法
73
查看次数