gpt4 book ai didi

c++ - Matrix C++ 矩阵乘法模板

转载 作者:太空宇宙 更新时间:2023-11-04 13:25:46 27 4
gpt4 key购买 nike

我有一个不同的帖子来获得有关覆盖模板抽象类的帮助,并且由于社区,我让它工作得很好。由于该帖子的问题已经消失,我要问一个新问题:

我想实现乘法,所以我需要不同的模板参数来使其工作(行数 = 列数条件),但我想不出正确的方法。

#pragma once
#include "AbsMatrice.h"

template <int M, int N, typename T>

class Matrice : public AbsMatrice<M,N,T>
{

public:
~Matrice(){}

//implementation de l'affichage
void print() const override
{
std::cout << "Matrice :" << std::endl;

for (int i = 0; i < M; i++)
{
for (int j = 0; j < N; j++)
{
std::cout << " " << this->m_data[i][j] << " ";
}
std::cout << std::endl;
}
}

template<int O>
Matrice<M, O, T>& mul(Matrice<N, O, T> &a)
{
Matrice<M,O,T> r;
T sum;
for (int c = 0; c < M; c++) {
for (int d = 0; d < O; d++) {
for (int k = 0; k < N; k++) {
sum = sum + m_data[c][k] * a(k,d);
}

r(c,d) = sum;
sum = 0;
}
}

return r;
}


};

使用 mul 函数时出现错误:

error C2100: illegal indirection
see reference to function template instantiation 'Matrice<2,2,int> &Matrice<2,2,int>::mul<2>(Matrice<2,2,int> &)' being compiled

谢谢你的帮助!

PS:() 运算符工作正常,所有不可见的代码都工作得很好,我正在努力使用这个函数。

最佳答案

我看到几个问题:

您的问题的答案是您不想返回 *r , 你只想返回 r .

第二个问题是 r应该是 Matrice<M,O,T> 类型.实际上它将是当前矩阵的类型。

关于c++ - Matrix<M,N,type> C++ 矩阵乘法模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33425983/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com