【问题标题】:C++ expression must have pointer to object type errorC++ 表达式必须有指向对象类型错误的指针
【发布时间】:2016-05-20 19:56:49
【问题描述】:

我是 C++ 新手。我正在研究 Matrix。

我有source.cpp,它是include;

#include "Matrix.h"

/*******************************************************
* Test1
*******************************************************/
void Test1(){
    Matrix M;
    double A[] = { 8, 2, 4, 6, 3, 5, 2, 7, 4 };
    double B[] = { 1, 5, 8, 3, 5, 6, 4, 7, 9 };
    double C[9];,
*
*
*

我的 matrix.cpp 类包括;

void Matrix::Add(double *A, double *B, double *C, int N){ 
    for (int i = 0; i<N; ++i)
    for (int j = 0; j<N; ++j)
        C[i][j] = A[i][j] + B[i][j];
}

但我得到了

"表达式必须有指向对象类型的指针"

C、A 和 B 出现错误。我该怎么办?

【问题讨论】:

  • 欢迎来到 StackOverflow!请提供minimal reproducible example
  • ABC 都不是矩阵,它们是简单的数组,因此您不能将它们视为您想要的数组数组。
  • Matrix 想要二维数组,但 ABC 是一维数组。
  • 我认为最好的做法是回到 c++ 教程,阅读有关数据类型和指针的内容。然后是关于对象编程和类。您显示的代码示例有点表明您在错误的方向上有点远。 “修复”你Matrix::Add 可能很容易,但它只会强化错误的路径。

标签: c++ pointers


【解决方案1】:

在matrix::add中,你有3个double*参数,它们是指向double值的单指针。

在您的函数中,您将它们视为 double** (A[x][y]),它们是值指针的指针。

如果你想完成这项工作,你必须在一个括号中计算数组的ID:C[i+j*N] = A[i+j*N] + B[i+j*N];

注意: 一个非常好的库,可以处理向量(2,3 和 4 维)和矩阵。 look at GLM Library

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    • 1970-01-01
    相关资源
    最近更新 更多