在MFC(C++)中定义了一个全局结构体,在其他函数中用这个结构体,编译调试没错,运行却不行,这是为什么? 急!求用C++编写一个使用结构体数组实现添加,删除,修改,查...
C++MFC\u7ed3\u6784\u4f53\u4e2d\u4f7f\u7528BOOL\u53d8\u91cf\u4e00\u4e2a\u662f\u5168\u5c40\u7684bool\u53d8\u91cf\uff0c\u53e6\u4e00\u4e2a\u662f\u7ed3\u6784\u4f53\u91cc\u7684\u53d8\u91cf\uff0c\u5168\u5c40\u53d8\u91cf\u76f4\u63a5\u7528\u5c31\u597d\u4e86
\u76f4\u63a5\u7528MFC \u7684 CArray\u5c31\u53ef\u4ee5\u4e86
\u5b9e\u4f8b\u4f2a\u4ee3\u7801\uff1a
Class MyPoint \u6216 struct MyPoint
{
XY\u5750\u6807\uff1b
\u70b9\u7684ID\uff1b
\u70b9\u7684NAME\uff1a
}
\u5b9a\u4e49\u6570\u7ec4
CArray m_arrMyPoint;
\u9700\u8981\u52a8\u6001\u6dfb\u52a0\u65f6
MyPoint point;
point.XY\u5750\u6807 = \u67d0\u503c\uff1b
point.\u70b9\u7684ID = \u67d0\u503c\uff1b
point.\u70b9\u7684name = \u67d0\u503c\uff1b
\u6dfb\u52a0:
m_arrMyPoint.Add(point);
m_arrMyPoint.InsertAt(\u4f4d\u7f6e\uff0cpoint);
\u5220\u9664\uff1a
m_arrMyPoint.RemoveAt(\u4f4d\u7f6e\uff0c\u5220\u9664\u6570\u91cf);
\u4fee\u6539\uff1a
MyPoint newPoint;
m_arrMyPoint.SetAt(\u4f4d\u7f6e\uff0cnewPoint)\uff1b
\u6216\u76f4\u63a5\u8d4b\u503c\uff1a
m_arrMypoint.GetAt(\u4f4d\u7f6e).\u67d0\u503c = \u65b0\u503c\uff1b
\u67e5\u8be2\uff1a
\u8fd9\u4e2a\u6ca1\u6709\u73b0\u6210\u529f\u80fd\uff0c\u81ea\u5df1\u5199\u4e2a\u6761\u4ef6\u904d\u5386\u5427
for(int i=0; i<m_arrMyPoint.GetSize(); i++)
{
if(m_arrMyPoint.GetAt(i).\u67d0\u503c == \u67d0\u6761\u4ef6)
{
\u5904\u7406\u4ee3\u7801\u3002\u3002\u3002
}
}
在course.cpp中定义,这样一个完整的结构体就成功了。
你的想法应该是想在course.cpp以外的文件中调用结构体song,这个时候在你需要调用
song aa[5]的文件中声明extern song aa[5]即可。
当然切记需要将course.h包含进来。希望能帮到你...
这肯定不是结构体的原因! 估计是你操作结构体的代码写的有问题…… 好好检查
关于这个问题,步聚如下:
1、在头文件中定义结构体
typedef struct song
{
char name[10];
char number[20];
}SONG;
2、在源文件开头定义一个结构体对象并初始化
SONG aa[5] = {"songxin", "12356"};
3、调用
CString ss;
ss = aa[0].name;
AfxMessageBox(ss);
以上只是一个小小的测试,结构体在C里是很有用的,当然C++还可以用类,请笑纳!
发代码看看啊
初始化时用到了其他的全局数据?
绛旓細extern song aa[5]杩欎釜鏀鹃敊浜嗕綅瀛愶紝鍦╟ourse.h澶存枃浠堕噷鍙渶瑕佸0鏄庣粨鏋勪綋鍗冲彲锛屽湪course.cpp涓畾涔锛岃繖鏍涓涓瀹屾暣鐨勭粨鏋勪綋灏辨垚鍔熶簡銆備綘鐨勬兂娉曞簲璇ユ槸鎯鍦course.cpp浠ュ鐨勬枃浠朵腑璋冪敤缁撴瀯浣搒ong锛岃繖涓椂鍊欏湪浣犻渶瑕佽皟鐢 song aa[5]鐨勬枃浠朵腑澹版槑extern song aa[5]鍗冲彲銆傚綋鐒跺垏璁伴渶瑕佸皢course.h鍖呭惈杩涙潵銆...
绛旓細CString str;鎻愰啋涓涓嬶紝璇ョ被鍨嬫槸涓涓绫伙紝涓嶈兘鍍忔櫘閫氬瓧绗︿覆閭f牱浣跨敤銆傚吀鍨嬬敤渚嬶細CRecordset.GetFieldValue(CRecordset::ForwardOnly,CString);
绛旓細瀹氫箟鏀惧埌cpp閲岄潰锛岀劧鍚庡湪.h閲岄潰extern灏卞彲浠ヤ簡銆
绛旓細鍏ㄥ眬鍙橀噺鐨勪綔鐢ㄥ氨鏄湪鏁翠釜绋嬪簭閲岄潰閮芥槸瀹冪殑浣滅敤鍩熺殑銆傞偅灏辨槸璇翠綘鍦ㄤ换浣曞湴鏂归兘鍙互寮曠敤鎴栬呰浣跨敤杩欎釜鍙橀噺鐨勩傛棦鐒朵綘鍦ㄦā鍧楅噷闈㈡洿鏀逛簡锛岄偅浣犲湪鍏朵粬鍦版柟浣跨敤杩欎釜鍏ㄥ眬鍙橀噺鐨勬椂鍊欙紝灏辨槸鏇存敼杩囧悗鐨勫肩殑銆傘
绛旓細瀵圭紪璇戝櫒鏉ヨ锛屼袱绉嶆柟娉曢兘鏄纭殑锛屼絾鏄寜浣犵殑璇存硶 鍙橀噺绫诲瀷搴旇鏄 FILE* 锛涘彉閲忓悕鏄痜liein銆俧liein鏄涓涓FLIE鎸囬拡绫诲瀷鐨勫彉閲
绛旓細涓嶅嚭閿欐墠鎬憿锛屼綘鍦╟pp鏂囦欢瀹氫箟鐨勭粨鏋勪綋锛屽湪.h澶存枃浠朵腑浣跨敤锛屾湁杩欎釜閬撶悊涔堬紵锛燂紵浣犳妸缁撴瀯浣撶殑澹版槑鏀惧埌CBasic2DView.h涓
绛旓細娑堟伅鍑芥暟涓嶇敤鑷繁鍐欙紝鍦ㄥ璇濇璧勬簮涓婃坊鍔涓涓鎸夐挳锛屽彸閿偣鍑绘寜閽紝鍦ㄥ脊鍑鸿彍鍗曚腑閫夋嫨Events椤癸紝涔嬪悗浼氬脊鍑轰竴涓坊鍔犳秷鎭嚱鏁扮殑绐楀彛锛岄夋嫨BN_CLICKED浜嬩欢锛岀劧鍚庣偣鍑烩淎dd and Edit鈥濇寜閽紝涔嬪悗VC浼氳嚜鍔ㄧ敓鎴愭寜閽殑娑堟伅鍑芥暟骞惰嚜鍔ㄨ浆鍒扮紪杈戞秷鎭嚱鏁扮晫闈紝姝ゆ椂浣犲彧瑕佸湪娑堟伅鍑芥暟閲屽姞涓婅鍙ワ細CDialog::OnOK();鍗冲彲 ...
绛旓細鍥炵瓟锛(1)鍑洪敊浼拌鏄綘瀹氫箟鍑芥暟瀹炰綋鐨勪綅缃槸鍦ㄧ被瀹氫箟澶栭儴杩涜鐨,涔﹀啓鏍煎紡閿欒: struct CListexampleDlg::Node* CreateList(CListexampleDlg::Node* L){...} 鏄敊璇殑 搴旇涓: struct CListexampleDlg::Node* CListexampleDlg::CreateList(CListexampleDlg::Node* L){...} (2)浣犳棦鐒瀹氫箟浜鏂..
绛旓細涓銆佸湪搴旂敤绋嬪簭绫涓畾涔 鐢MFC鐢熸垚鐨勫伐绋嬩腑閮鏈変竴涓鍚嶄负CxxxApp鐨勭被锛屽畠娲剧敓浜嶤WinApp绫汇傝繖涓被涓昏杩涜绋嬪簭鐨勫垵濮嬪寲锛岀敓鎴愭枃妗c佽鍥惧璞$瓑宸ヤ綔銆傛垜浠彲浠ユ妸闇瑕佸叏灞璁块棶鐨勫彉閲忓拰鍑芥暟瀹氫箟涓鸿繖涓被鐨勬垚鍛樺彉閲忓拰鎴愬憳鍑芥暟锛屽氨鍙互瀹炵幇鍏ㄥ眬璁块棶浜嗐備粠涓ユ牸鎰忎箟涓婅锛岃繖绉嶅彉閲忓拰鍑芥暟骞朵笉鏄叏灞鐨勶紝鍥犱负瀹冧粛鐒...
绛旓細锛1锛夌獥鍙e垱寤哄嚱鏁 杩欓噷涓昏璁ㄨ鍑芥暟Create鍜孋reateEx銆傚畠浠皝瑁呬簡Win32绐楀彛鍒涘缓鍑芥暟::CreateWindowEx銆侰reate鐨勫師鍨嬪涓嬶細BOOL CWnd::Create(LPCTSTR lpszClassName,LPCTSTR lpszWindowName, DWORD dwStyle,const RECT& rect,CWnd* pParentWnd, UINT nID,CCreateContext* pContext)Create鏄涓涓铏氭嫙鍑芥暟锛岀敤...