gpt4 book ai didi

c++ - 指针数组的问题

转载 作者:太空宇宙 更新时间:2023-11-04 15:52:02 24 4
gpt4 key购买 nike

语言:C++、MFC

问题:我试图向函数传递一些指向数组中包含的变量的指针,但编译器似乎不同意我的做法。这是我的代码:

头文件:

CString m_strTop;
CString m_strLeft;
CString m_strRight;
CString m_strBottom;

CString *var[4];

源文件:构造函数()

CString *var[4] = {
&m_strTop
, &m_strLeft
, &m_strRight
, &m_strBottom
};

源文件:DoDataExchange()

void FSC_3DPersp::DoDataExchange(CDataExchange* pDX)
{
CSAPrefsSubDlg::DoDataExchange(pDX);

for(int i = 2001, j = 0; i <= 2004, j < 4; i++, j++)
{
DDX_Text(pDX, i, &var[j]); // 'i' is the ID of the textbox
}
}

-- DDX_Text 期望什么--

void AFXAPI DDX_Text(
CDataExchange* pDX,
int nIDC,
CString& value
);

我想以这种方式进行 DataExchange,因为在我的几个文件中,我有超过 75 个变量,并且使用循环可以显着压缩代码并简化事情。

我知道我遇到的问题是我只是向 DDX_Text 提供了错误的参数,但我知道它需要 CString。但是,我很确定我没有正确引用它们。

如有任何帮助,我们将不胜感激!

~乔恩

最佳答案

代替

DDX_Text(pDX, i, &var[j]);

使用

DDX_Text(pDX, i, *(var[j]));

因为您在那里已经有一定程度的间接访问。

关于这个:

for(int i = 2001, j = 0; i <= 2004, j < 4; i++, j++)

我不确定您是否知道您设置的条件是正确的,因为逗号运算符就是这样工作的。你应该把左边的那个留在外面,因为当 j < 4 时它永远不会是假的。表达式是正确的,或者使用 && 运算符更清楚。

我假设您使用 Visual Studio 进行 MFC 编程,因此我建议在该行设置一个断点并确保您的数组已正确初始化。如果是,则问题出在其他地方。

关于c++ - 指针数组的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6332133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com