c++ - 从 CArray 指针访问值

标签 c++ arrays windows pointers mfc

我有一个类,它有一个 CArray 对象,我需要从这个 CArray 获取值到另一个类,但到目前为止还没有这样做。

class CTempGridClass: public CTableCtrl {
public:
    CArray<CArray<float,float>, CArray<float,float>&> *m_row2;
};

class CCorePassageAreasPage : public CDialog {
    DECLARE_DYNCREATE(CCorePassageAreasPage)
public:
    enum { IDD = IDD_CORE_PASSAGE_AREA };
    CArray<CArray<float,float>, CArray<float,float>&> m_row;
    CTempGridClass Grid;
};

BOOL CCorePassageAreasPage::OnSetActive() {
    Grid.m_row2 = &m_row;
}

如何访问 m_row2 值?我试过了

float x  = m_row2[0][1];

但这会给出“'初始化':无法从'CArray'转换为'float'”错误。我可以对 m_row 进行上述分配,没有任何错误。

我知道我可以通过使用 vector 来避免这种情况,但“CCorePassageAreasPage”是由其他人创建的,我不想更改它。

最佳答案

m_row2 是一个指针;因此,如果 m_row2[nRow] 指向一个数组,则它会引用 CArray 数组的元素 nRow。由于它(大概)仅指向单个对象,因此它仅访问无效内存。

你几乎肯定不希望它成为一个指针;既然你说类“拥有”它,那么它应该只是一个没有不必要间接的成员。

如果出于某种原因您确实需要一个指针,那么您需要取消引用它以访问它指向的数组:

float x  = (*m_row2)[nRow][j];

关于c++ - 从 CArray 指针访问值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21828174/

相关文章:

c++ - 在 OpenGL 上绘制点的意外 gluLookAt 行为

Windows 10 不断循环 "How do you want to open this file?"对话框

c++ - 为什么使用 std::function 回调的可变模板参数推导模板参数失败?

c++ - 错误套接字更新 C++

c++ - 在 C++ 中 : why does a constructor get called when an array of objects is declared?

c++ - 指向数组的指针的 Malloc - C++

c++ - WAN 上 Windows 命名管道的低吞吐量

c++ - 如何在 Qt Cmake 项目中使用 QML_IMPORT_PATH?

c++ - 复制构造函数省略?

php - 将 uniqid 保存在数据库和图片文件夹中