我在MFC比較底層的一個datapre的類里定義一個讀檔案引數的函式,傳引數進行處理,函式回傳我定義的結構體指標。在頭檔案里定義結構體、宣告函式,在.cpp里寫代碼。麻煩幫忙看下可能是什么問題?總提示我沒有定義。
頭檔案:
struct para
{
int Num。。。。。;
float fSweepPeriod。。。。。; //。。。代表我定義的其他變數,這里就不往上寫了,想來也不是這些變數的問題
int 。。。。。。;
double pi;
float T,Tpp,B,alpha,dR;
int 。。。。。。;
}para;
struct para *syspara;
struct data* acquire_para(CString readpath,CString savetimepath,CString savefrepath,struct para* a);//前面三個是輸入引數,最后一個結構體是我想回傳的
.cpp里
struct CDataPre::para* acquire_para(CString readpath,CString savetimepath,CString savefrepath,struct para* a)
{
struct para *syspara=(struct para*)malloc(sizeof(struct para));
syspara->Num=100;
大白新手,歡迎拍磚教導。
uj5u.com熱心網友回復:
typedef struct _tagpara_t{
int Num;
}para;
para *syspara=(para*)malloc(sizeof(para));
syspara->Num=100;
free(syspara);
uj5u.com熱心網友回復:
不明白,請問你是覺得哪里有問題,所以改了這個?是想說我沒有free()還是怎么樣?uj5u.com熱心網友回復:
struct para //結構體{
}m_para //結構體實體
用不同的名字, 好區分是結構體宣告還是實體
uj5u.com熱心網友回復:
問題解決 方法一:函式回傳為空void型別,將想要回傳的結構體做全域量,從該類的物件里直接呼叫方法二:回傳結構體型別的時候需要帶上該結構體所屬的類才能識別,.cpp里struct CDataPre::para* CDataPre::acquire_para(.......)
方法三:將結構體另開一個頭檔案,定義結構體,包含該頭檔案即能識別改結構體。.cpp里struct para* CDataPre::acquire_para(......)
方法一該類的全域存在系統自動銷毀的問題,不安全;方法二:可以用,但是如果這個類在多個類里都需要用到,并且在類之間存在互動呼叫的話就會出問題,這就涉及到新的解決方法了;方法三推薦。
方法二是以前改過的方法了,給出的實體代碼不一定完全準確,大概就是這么個意思。
uj5u.com熱心網友回復:
struct MSG_Login{
int cmd; //命令 C2S_LOGIN
char name[20]; //用戶名
char pwd[20]; //密碼
};
這樣也行。
struct MSG_Login{
int cmd; //命令 C2S_LOGIN
char name[20]; //用戶名
char pwd[20]; //密碼
}MSG_Login;
肯定編譯不通過。
uj5u.com熱心網友回復:
我主要問的是呼叫問題及在函式執行中賦值問題,而不在結構體定義,希望大家不要再回復本帖了,問題已解決,方法成熟。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/86842.html
標籤:基礎類
上一篇:鎖相環
