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
کدم اینطوریه که نوشتید اینجا حواسم نبوده اشتباه نوشتم
فقط میتونه از private استفاده کنه؟؟؟
نه  از public , protected هم میتونه استفاده کنه .
بعد اگه فایل cpp,h جدا باشن فقط توی hبنویسم؟
تابع funcمن ورودی نداره
نه لزومی نداره که داخل .h باشه
۳ کار می تونید بکنید
1_ به جای این که ورودی b باشه b رو داخل تابع func بسازین .
2 - تابع distance رو به جای این که عضو کلاس باشه global و به شکل friend تعریف کنید .
3 _ تابع distance رو static تعریف کنید . http://paste.ofcode.org/gGhfhVKYBbfBzUT3iYEAAQ
مرسی ....
staticبودن یک تابع رو میشه بگین چیه؟
وقتی که یک تابع عضو کلاس static تعریف میشه معنیش اینه که برای استفاده ازش نیازی به ساخت شی نداریم
اگر مشکلتون حل شد اون تیک کنار سوال رو هم بزنین ممنون .
این حرف رو اضافه کنم که با :: فراخوانی  میشن. (اعضای static)
مثلا :
http://paste.ofcode.org/397aP9vac8rxVqxTwiCcWYm
...