نمایش نتایج 1 تا 8 از 8

نام تاپیک: مشکل در override کردن >> برای خروجی cout

  1. #1

    مشکل در override کردن >> برای خروجی cout

    سلام دوستان من کد زیر را نوشتم که از خط زیر ایراد می گیرد
    ostream& String::operator<<(ostream& stream,const String& str){

    کل کد
    #include <iostream>
    #include <cstring>
    using std::cout;
    using std::cin;
    using std::endl;
    using std::ostream;
    /* run this program using the console pauser or add your own getch, system("pause") or input loop */

    class String{
    char *ch;
    public:
    String();
    String operator=(char* ob);
    String operator+(String str);
    char * toString();
    friend ostream& operator<<(ostream& stream,const String& str);
    };

    String::String(){
    }

    String String::operator=(char* ob){
    ch=ob;
    return *this;
    }

    String String::operator+(String str){
    String temp;
    temp.ch=strcpy(ch,str.ch);
    return temp;
    }
    ostream& String::operator<<(ostream& stream,const String& str){
    stream<<str.ch;
    return stream;
    }

    char * String::toString(){
    return ch;
    }

    int main(int argc, char *argv[]) {
    String str1,str2,str3;
    str1="ehsan";
    str2="shahbakhty";
    cout<<str2;
    return 0;
    }



    خطای زیر تولید می شود :

    [Error] 'std::ostream& String::operator<<(std::ostream&, const String&)' must take exactly one argument
    VIP=Very Important Person

  2. #2

  3. #3

    نقل قول: مشکل در override کردن >> برای خروجی cout

    بله پبغام خودم خوندم ! خوب راه حل چیه ؟ من می خواهم این >> را پیاده سازی کنم ؟

    پس احتمالا این لینک هم میکروسافت غیر منطقی رفته :
    http://msdn.microsoft.com/en-us/library/1z2f6c2k.aspx
    آخرین ویرایش به وسیله zehs_sha : یک شنبه 24 فروردین 1393 در 07:51 صبح
    VIP=Very Important Person

  4. #4

    نقل قول: مشکل در override کردن >> برای خروجی cout

    این راه مایکروسافت یک تابع خارج از کلاس است. اما تابع شده داخل کلاس است. در مورد اوپراتور‌هایی که داخل کلاس هستند یک طرف اوپریت خود کلاس در نظر گرفته می‌شود.
    من نمیدونم شما باید چطور این متد را پیاده سازی کنید، چون نمیدانم قرار است از نظر منطقی چه اتفاقی در آن بیفتد. لطفا بفرمایید چه کاری قرار است این تابع انجام دهد؟

  5. #5

    نقل قول: مشکل در override کردن >> برای خروجی cout

    خط ۱۶ رو ببرید بالای عبارت public (یعنی قبل از پابلیک)درست میشه....!

  6. #6

    نقل قول: مشکل در override کردن >> برای خروجی cout

    سلام

    ostream& operator<<(ostream& stream,const String& str){
    stream<<str.ch;
    return stream;
    }


    قراره اپراتور موجود در کلاس ostream دوباره override بشه نه اپراتور موجود در کلاس string
    وقتی به عنوان friend اعلان کردید یعنی این اپراتور عضوی از کلاس ostream هست و قراره به اعضای private کلاس String دسترسی داشته باشه
    پس هنگام تعریف این اپراتور دقت کنید این اپراتور عضوی از کلاس ostream هست

  7. #7

    نقل قول: مشکل در override کردن >> برای خروجی cout

    نقل قول نوشته شده توسط java4me مشاهده تاپیک
    خط ۱۶ رو ببرید بالای عبارت public (یعنی قبل از پابلیک)درست میشه....!
    اوپراتوری که private باشه اوپراتور نیست!

  8. #8

    نقل قول: مشکل در override کردن >> برای خروجی cout

    داخل کد شما اپراتور بصورت عضوی از کلاس تعریف شده .
    شما باید اپراتور گلوبال >> رو overload کنی اون operator ای که نوشتی عضو کلاس هست و برای این استفاده میشه >>String

    این جا هم قبلا بحث شده بود : نوشتن یک کلاس بوسیله cout
    آخرین ویرایش به وسیله omid_kma : دوشنبه 25 فروردین 1393 در 01:08 صبح

تاپیک های مشابه

  1. سوال: مشکل در اختصاصی کردن ک فایل برای کاربران سایت
    نوشته شده توسط mohammad_kazem در بخش ASP.NET Web Forms
    پاسخ: 8
    آخرین پست: شنبه 22 مرداد 1390, 18:45 عصر
  2. سوال: مشکل در کار کردن با JBuilder برای نصب برنامه یه شبیه سازی دینامیکی ربات ها
    نوشته شده توسط mas.fazeli2001 در بخش Java SE : نگارش استاندارد جاوا
    پاسخ: 3
    آخرین پست: جمعه 14 مرداد 1390, 01:01 صبح
  3. سوال: مشکل با رجیستر کردن متغیر username برای لوگین کردن
    نوشته شده توسط rezarss در بخش PHP
    پاسخ: 5
    آخرین پست: یک شنبه 01 اسفند 1389, 07:35 صبح
  4. سوال: مشکل در override کردن OnPaint در کلاس CDockablePane
    نوشته شده توسط حسین محمدی در بخش برنامه نویسی با MFC و ++Visual C
    پاسخ: 0
    آخرین پست: شنبه 25 مهر 1388, 15:26 عصر
  5. مشکل با override کردن Paint
    نوشته شده توسط Delphi-Man در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 11
    آخرین پست: پنج شنبه 28 خرداد 1388, 16:54 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •