

MCtrlCode是結構體。
請問上圖這樣的錯誤是因為沒有對結構體變數初始化嗎?
如果要初始化又該怎么修改?
uj5u.com熱心網友回復:
你這個不是錯誤,只是成員變數沒有初始化吧。你在MCtrlCode里定義一個建構式,給你的成員初始化一下即可。
uj5u.com熱心網友回復:
建構式還沒有被執行, 往下走一步再看uj5u.com熱心網友回復:

建構式是這樣寫嗎?
node() :x(), str(), data(){} //無引數的建構式陣列初始化時呼叫
node(int a, string b, char c) :data(a), str(b), x(c){}//有參構造
uj5u.com熱心網友回復:
memset(&testcmd,0,sizeof(MCtrlCode));我這樣初始化,程式無變化,一樣的錯誤指標
uj5u.com熱心網友回復:
旁邊這個箭頭指向的是即將運行的代碼,指著這行代碼還沒運行呢,建構式都沒呼叫,當然是錯誤指標了。你多執行一行試試
uj5u.com熱心網友回復:

我說怎么有時候前三個是空,有時候又不是空,原來是這個原因啊。
但是程式執行的時候還是不行的。
還有三個指標錯誤,這3個錯誤的指標是CString型的
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
而且在我沒給程式添加memset(&testcmd,0,sizeof(MCtrlCode));
這句初始化代碼之前,程式是在后面才發生問題,加了之后,return這里就發生中斷了
BOOL hitted=FALSE;
MCtrlCode testcmd;
memset(&testcmd,0,sizeof(MCtrlCode));
if(m_stopTest=FALSE)
{
MessageBox(_T("測驗正在執行,不能再次執行!"),_T("測驗"),MB_OK);
return;
}
m_testcmdlist.clear();
m_hitteditemlist.clear();
for(int i=0;i<m_motionProgram.GetItemCount();i++)
{
hitted=m_motionProgram.HittedItem(i);
if(hitted)
{
m_hitteditemlist.push_back(i);
}
}
if(m_hitteditemlist.size()<1)
{
MessageBox(_T("沒有選中測驗指令,不能執行!"),_T("測驗"),MB_OK);
return;
}
uj5u.com熱心網友回復:
結構體中用了類, 不要使用memset 清零初始化uj5u.com熱心網友回復:
那應該怎么初始化uj5u.com熱心網友回復:
逐個賦值typedef struct _tagTest_t
{
int a, b;
CString s;
_tagTest_t()
{
a = 0, b=0;
s = _T("");
}
}TEST;
uj5u.com熱心網友回復:
CString 是變程度的!用 CString *
或
char【256】
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/228580.html
標籤:基礎類
