You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中Matrix2D调用swishMatrix后push_back入vector报类型不匹配错误

报错原因

你定义的swishMatrix()方法没有显式声明返回值类型,C++中如果成员函数没有声明返回值,会默认返回int类型。你调用matrixAddition得到的是Matrix2D对象,调用它的swishMatrix()方法后返回的是int值,往vector<Matrix2D>里push int当然会报类型不匹配的错。
你直接对普通Matrix2D对象调用这个方法不会报错,是因为你没用到它的返回值,只是执行了修改矩阵本身的逻辑而已,没触发类型检查。

解决方法

两种方案选一个即可:

  • 如果你要保留链式调用的写法,把swishMatrix()的返回值改成Matrix2D&,方法末尾返回*this:
Matrix2D& swishMatrix(){            
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < columns; j++) {
            matrix[i][j] = matrix[i][j] * sigmoid(matrix[i][j]);
        }
    }
    return *this;
}
  • 如果你不想改方法定义,就拆分调用逻辑,先把矩阵运算结果存到临时变量,调用swishMatrix()之后再push到vector里:
Matrix2D temp = Matrix2D::matrixAddition(Matrix2D::matrixMultiplication(first_hidden_weights, input_nodes), hidden_biases[0]);
temp.swishMatrix();
activated_hidden_nodes.push_back(temp);
// 另一个报错的位置也按相同逻辑修改即可

内容的提问来源于stack exchange,提问作者SnowballAvocado

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 11:06:03