如何在方法中同时具有右值输入带有运算符 =和普通参数?

问题描述

我有点想在这里创建一个类方法,它能够将带有“operator =”的右值分配给一个数组,这也需要输入索引。现在代码看起来像这样:

#include <iostream>
    
using namespace std;

class Matrix
{
    public:
        int nz,nx;
        float *elements;
        int size() {return nz * nx;} // Return size of the matrix
        float idx(int,int);
        void idxAssign(int,int) operator = (float);
        void allocate() {elements = new float[size()];}
};

void Matrix::idxAssign (int i,int j) operator = (float &rvalue)
{
    elements[j * nz + i] = rvalue;
}


float Matrix::idx (int i,int j)
{
    // Return a element of the matrix from the index
    return elements[j * nz + i];
}

void dotprodMatrix(Matrix A,Matrix B)
{
    if(A.size() == B.size()){
        for(int i=0; i<A.size; i++){
            A.idxAssign(i,j) = A.idx(i,j) + B.idx(i,j);
        }
    }
}

int main()
{
    Matrix A;
    A.nz = 32;
    A.nx = 32;

    Matrix B;
    B.nz = 32;
    B.nx = 32;

    // Method to allocate both matrices in the cpu
    A.allocate();
    B.allocate();

    // Fill up
    for(int i=0; i<B.size(); i++)
    {
        A.elements[i] = 2.0;
        B.elements[i] = 5.0;
    }
    dotprodMatrix(A,B);
    // Print results
    for(int i=0; i<A.nz; i++)
    {
        for(int j=0; j<A.nx; j++)
        {
            cout<<A.idx(i,j)<<"  ";
    }
        cout<<endl;
    }


    delete A.elements;
    delete B.elements;
    return 0;
}

在执行时,编译器说 at 声明它期望在 ; 之后紧跟一个“void idxAssign(int,int)”。我对 C++ 类、运算符和其他什么不是很了解,所以请原谅我的代码质量。我花了很多时间试图寻找解决方案,直到我最终决定在这里寻求帮助。所以如果你能帮我一点,谢谢!

提前谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)