Язык: Visual C ++, MFC
Среда: Visual Studio 2005
Итак, я написал похожий вопрос, но я понял, что задаю не тот вопрос. Я пытаюсь использовать цикл для вызова функции с несколькими различными переменными, но где-то на этом пути происходит сбой программы.
Упрощенный код приведен ниже, но я думаю, что на самом деле его проще объяснить. У меня есть функция, которая принимает CString в качестве параметра. У меня есть несколько переменных, которые я хочу передать этой функции, поэтому я помещаю их имена в массив и пытаюсь передать их в функцию таким образом.
// КОД НИЖЕ, ЧТО Я ИМЕЮ, НО НЕ РАБОТАЕТ //
Заголовочный файл:
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
};
Исходный файл:
theFunction ()
void myClass::DoDataExchange(CDataExchange* pDX)
{
CSAPrefsSubDlg::DoDataExchange(pDX);
for(int i = 2001, j = 0; i <= 2004; i++, j++)
{
// THE LINE BELOW IS WHERE THINGS GO WONKY, SPECIFICALLY AT &var[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
);
Итак, как я уже сказал, мне просто нужно передать функции фактическое имя переменной. По крайней мере, я так думаю. На самом деле он устанавливает связь между текстовым полем в диалоге и переменной, в которой будет храниться ввод текстового поля. Я правильно разыменую и все, но я не думаю, что это правильный подход.
Спасибо за любую помощь. И людям, которые ответили на мой предыдущий вопрос, мои извинения за искажение проблемы.