我有一个类,它有一个 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/