error در c++.net

sara_she

Member
سلام

خطاي زير به چه دليل به وجود مي آيد:

Projects\objectarx_project\Step01_win\HelloWorld.cpp(330): error C2352: illegal call of non-static member function

با تشكر
 

saalek110

Well-Known Member
با سلام.
برای استفاده از متدهای یک کلاس باید شی ساخت. ولی یک استثنا دارد و آن اینکه متدهای کلاس استاتیک باشد.

و در خطای بالا می گوید که شما دارید متدی را فرا می خوانید که استاتیک نیست. پس ساختن شی را فراموش نکنید.
 

sara_she

Member
ممكنه اين مشكل به خاطر استفاده از متدهاي كلاسي باشه كه اين كلاس در يك using قرار داشته و ما اين using رو تو پروژه ننوشته باشيم يا add reference نكرده باشيم؟
 

saalek110

Well-Known Member
فکر کنم اون موقع بگه چنین تابعی وجود نداره(یا یک خطای دیگه) ولی خطایی که شما در بالا نوشتید موقعی است که کامپایلر می بیند که تابع وجود دارد ولی دسترسی بهش وجود ندارد.
ولی باید امتحان بشه.
 

sara_she

Member
من وقتي كلاسي رو مي نويسم و مي خوام از يكي از متدهاي اون استفاده كنم بعد از نوشتن نام كلاس و گذاشتن ::
(در C++.net2003) متد ها به صورت يك ليست باز مي شوند و از بين آنها انتخاب مي كنم ولي با اين وجود اين Eeror وجود دارد

كلاس مورد نظر در C++ تعريف شده است و Custom Class نيست كه يك نمونه از آن ايجاد كنم
 

saalek110

Well-Known Member
محیط کار : ویژوال سی + دات نت 2003
من یک dll ساختم با 2 متد. از نوع پابلیک و پریویت .
بعد پروژه دیگری برای استفاده از آن dll ساختم.
حالا داریم:

c6.gif


یعنی متد پابلیک را دارد نشان می دهد که قبل ساختن شی از کلاس قابل استفاده نیست. ولی من با این وجود با کد زیر به کارم ادامه می دهم:

کد:
dll3::Class1::my_public();

خطایی که دریافت می کنم این است:

کد:
dll3::Class1::my_public' : illegal call of non-static member function

این بار شی را خلق می کنم.

c7.gif


باز هم مثل دفعه قبل متد pulic نشان داده می شود ولی این بار قابل استفاده است.

کد:
				 dll3::Class1 *my_object=new  dll3::Class1();
				 my_object->my_public();
 

جدیدترین ارسال ها

بالا