从CArray指针访问值

时间:2014-02-17 11:43:07

标签: 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'转换为'浮动'”错误。我可以毫无错误地对m_row进行上述分配。

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

1 个答案:

答案 0 :(得分:2)

m_row2是一个指针;所以如果m_row2[nRow]指向数组,nRow将引用CArray数组的元素float x = (*m_row2)[nRow][j]; 。因为它(大概)只指向一个对象,所以它只是访问无效的内存。

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

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

{{1}}