定义类构造函数的正确方法是什么
What is the correct way of defining the class constructor?
我正在尝试通过传递给将进行乘法的类来乘以两个矩阵。我在定义构造函数时遇到问题,请帮助我解决这个问题。(错误如下所示)
我的头文件是MatMul.h,因为:
#include<iostream>
#include<iostream>
using namespace std;
class MatMul
{
double **C;
int row,col,common;
public:
MatMul(int p,int q,int r)
{
row=p; col=q,common=r;
C=new double *[row];
for(int i=0;i<row;i++)
C[row]=new double [col];
}
void multiply(double A[][3],double B[][3],int p,int q,int r)
{
for (int i=0;i<row;i++)
{
for (int j=0;j<col;j++)
{
C[i][j]=0;
for(int k=0;k<r;k++)
{
C[i][j]=C[i][j]+A[i][k]*B[k][j];
}
}
}
}
};
并且主CPP文件是
#include<iostream>
#include<iostream>
using namespace std;
#include"MatMul.h"
int main()
{
int p=3,q=3,r=3;
double A[p][r]={{1,0,0},{0,1,0},{0,0,1}};
double B[r][q]={{1,0,0},{0,1,0},{0,0,1}};
MatMul c(p,q,r);
c.multiply(A,B,p,q,r);
return 0;
}
它正在显示
error: no matching function for call to ‘MatMul::multiply(double [p][r], double [r][q], int&, int&, int&)’
请您识别错误并更新它。
静态数组大小不能来自非常量变量。
这将编译得很好(p
,q
和r
const
):
const int p=3,q=3,r=3;
double A[p][r]={{1,0,0},{0,1,0},{0,0,1}};
double B[r][q]={{1,0,0},{0,1,0},{0,0,1}};
此外,无需包含两次<iostream>
(甚至一次也不行,因为您经常使用它)。 using namespace std;
在您的代码中也是无用的。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- C++从另一个类访问公共静态向量的正确方法是什么
- 在 c++ 中拥有一组结构的正确方法是什么?
- 通过JNI传递数据数组的最快方法是什么
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 使用不同的CRT将新的C++代码与旧的(二进制)组件隔离开来的最佳方法是什么
- 当无法使用模板和宏时,生成类型变体C++代码的最简单方法是什么?
- 在另一个类视图中添加最多2个图表的正确方法是什么
- 在C++中样板"冷/never_inline"错误处理技术的最佳方法是什么?
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 在C++中包含原型文件的正确方法是什么?
- 在 OpenCV C++ 中估计基本矩阵之前对相应点进行归一化的正确方法是什么?
- 在PostgreSQL中根据它们的ID选择大量行的最快方法是什么?
- 在OSX上使用CMake将Adobe的XMP工具包构建为共享库的最简单方法是什么?
- 将一系列整数放入类的最佳方法是什么?
- 从长整整转换为uint64_t的推荐方法是什么?
- 将此布尔值传递给此函数的最有效方法是什么?
- 通过比较C++中的行在 txt 文件中搜索的最简单方法是什么?