mscode.ir
جمعه 23 فروردین 1387, 18:18 عصر
من یه مشکل اساسی با ++C دارم ,کسی میتونه کمک کنه؟
یکی از اساسی ترین خوبی های c++ اینه که افراد بدون اینکه از پیاده سازی کلاس اطلاع داشته باشند ,بتونند از کلاس استفاده کنند.
مثلا کلاسی نوشته شده که زمان رو به دو صورت نمایش میده, کلاس time در فایل time.h تعریف شده و پیاده سازی اون در فایل time.cpp .
حالا در فایل showtime.cpp که تابع main ما قرار داره ,باید هدر فایل time.h را قرار دهیم تا بتونیم از کلاس مذکور استفاده کنیم.
مشکل من اینه که زمانی که این کار رو میکنم در کامپایل برنامه مشکلی پیش نمیاد, ولی زمان لینک ارور لینک میگیره.
و اگر در این زمان من هدر time.h رو با هدر time.cpp عوض کنم برنامه بدون هیچ مشکلی run میشه.
کامپایلرم microsoft visual studio 6.0 هست.
اگر هدر time.cpp رو بزارم که مشکلی پیش نمیاد.
من میخام اصل پنهانسازی اطلاعات رو رعایت کنم ,
الان خیلی وقته با همین سیستم دارم کار میکنم , مشکلی هم پیش نیومده.
تنها جائی که مشکل پیش میاد جائی هست که میخام از یه سورس کد آماده استفاده کنم ,اونوقت باید تمامی هدر فایل های *.h رو باید تبدیل به هر فایل *.cpp بکنم , که بعضی وقتها خیلی وقت گیره.
این eror رو میده.
--------------------Configuration: car3d - Win32 Debug--------------------
Compiling...
car3d.cpp
Linking...
car3d.obj : error LNK2001: unresolved external symbol "public: __thiscall squre::squre(void)" (??0squre@@QAE@XZ)
البته اسم ها زیاد مهم نیست مثل squre چون این رو تو کلاس تعریف کردم , مهم اینه که زمان link نمیتونه مثلا squre.h رو به squre.cpp لینک کنه و تعاریف کلاس squre که در squre.cpp تعریف شده رو پیدا کنه.
دوست دارم پیشنهاد هاتون رو بشنوم. ممنون.
یکی از اساسی ترین خوبی های c++ اینه که افراد بدون اینکه از پیاده سازی کلاس اطلاع داشته باشند ,بتونند از کلاس استفاده کنند.
مثلا کلاسی نوشته شده که زمان رو به دو صورت نمایش میده, کلاس time در فایل time.h تعریف شده و پیاده سازی اون در فایل time.cpp .
حالا در فایل showtime.cpp که تابع main ما قرار داره ,باید هدر فایل time.h را قرار دهیم تا بتونیم از کلاس مذکور استفاده کنیم.
مشکل من اینه که زمانی که این کار رو میکنم در کامپایل برنامه مشکلی پیش نمیاد, ولی زمان لینک ارور لینک میگیره.
و اگر در این زمان من هدر time.h رو با هدر time.cpp عوض کنم برنامه بدون هیچ مشکلی run میشه.
کامپایلرم microsoft visual studio 6.0 هست.
اگر هدر time.cpp رو بزارم که مشکلی پیش نمیاد.
من میخام اصل پنهانسازی اطلاعات رو رعایت کنم ,
الان خیلی وقته با همین سیستم دارم کار میکنم , مشکلی هم پیش نیومده.
تنها جائی که مشکل پیش میاد جائی هست که میخام از یه سورس کد آماده استفاده کنم ,اونوقت باید تمامی هدر فایل های *.h رو باید تبدیل به هر فایل *.cpp بکنم , که بعضی وقتها خیلی وقت گیره.
این eror رو میده.
--------------------Configuration: car3d - Win32 Debug--------------------
Compiling...
car3d.cpp
Linking...
car3d.obj : error LNK2001: unresolved external symbol "public: __thiscall squre::squre(void)" (??0squre@@QAE@XZ)
البته اسم ها زیاد مهم نیست مثل squre چون این رو تو کلاس تعریف کردم , مهم اینه که زمان link نمیتونه مثلا squre.h رو به squre.cpp لینک کنه و تعاریف کلاس squre که در squre.cpp تعریف شده رو پیدا کنه.
دوست دارم پیشنهاد هاتون رو بشنوم. ممنون.