friend class ها - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

friend class ها

0 امتیاز

وقتی کلاسی friend کلاسه دیگه ایه مگه نمیتونه از توابع ان کلاس استفاده کنه؟ ولی errorمیده

class a
{
    friend class b;
    public:
        boo func();
};

class b
{
    public:
       int* distance(point)
 };

int a::fun(){
    if(distance(z)
}

مشکل خط اخره

سوال شده فروردین 15, 1393  بوسیله ی programmer (امتیاز 139)   9 19 32
دوباره تگ گذاری شد مهر 9, 1393 بوسیله ی BlueBlade

حداقل میگفتی ارور چی میده یا کدت رو میزاشتیindecision

بله میتونه استفاده کنه .
چه اروری میده ؟
نمونه ساده شده کلاستون رو بزارید
identifier "distance" is undefined

1 پاسخ

+2 امتیاز
 
بهترین پاسخ

به خاطر اینه که بر عکس نوشتید باید داخل خود کلاس تعریف کنید که کدوم کلاس باهاش friend هستش .
بعد این که وقتی که می خوای از b داخل a استفاده کنی باید b رو اول تعریف کنی
ضمنا برای صدا زدن تابع عضو کلاس نیاز به ساخت شی از کلاس هم داری
کدتون باید به این شکل باشه

#include <iostream>
using namespace std;
class B
{
    friend class A;
    private:
       void distance(){cout<<1;}
};

class A
{
    public:
        int func(B b){b.distance();}
};

int main()
{
    A a;
    B b;
    a.func(b);
    return 0;
}
پاسخ داده شده فروردین 15, 1393 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
انتخاب شد فروردین 16, 1393 بوسیله ی programmer
مرسی ....
staticبودن یک تابع رو میشه بگین چیه؟
وقتی که یک تابع عضو کلاس static تعریف میشه معنیش اینه که برای استفاده ازش نیازی به ساخت شی نداریم
اگر مشکلتون حل شد اون تیک کنار سوال رو هم بزنین ممنون .
این حرف رو اضافه کنم که با :: فراخوانی  میشن. (اعضای static)
مثلا :
http://paste.ofcode.org/397aP9vac8rxVqxTwiCcWYm
...