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

نام تاپیک: کمک در ارسال یک متد از یک کلاس به متد دیگری از کلاس دیگر

  1. #1

    کمک در ارسال یک متد از یک کلاس به متد دیگری از کلاس دیگر

    سلام

    من دو تا کلاس دارم به نام های Class_Equation و Class_Solver و میخواهم یک متد از کلاس Class_Equation را به کلاس Class_Solver ارسال کنم، در واقع خود متد میخواهم بفرستم نه مقادیر بازگشتی ان را ...

    هر کاری میکنم خطا میده ، کسی میتواند کمک کند ؟؟؟


    vector<double> Class_Equation::Equa_1(
    double a,
    vector<double> b)
    {
    vector<double> vn;

    for (int i = 0; i < 5; i++)
    {
    vn.at(i) = a * b.at(i);
    }

    return vn;
    }

    vector<double> Class_Solver::Solver_1(
    vector<double>(fc)(double, vector<double>),
    double a,
    vector<double> b)
    {
    vector<double> Result;

    Result = fc(a, b);

    return Result;
    }


    void main()
    {
    //.....

    newh = Solver.Solver_1(Equation.Equa_1, 10, h);
    }



    اصل برنامه هم ضمیمه است ...
    Pass_Class_Method.rar

  2. #2

    نقل قول: کمک در ارسال یک متد از یک کلاس به متد دیگری از کلاس دیگر

    شما بدون اينکه کلاس رو بسازيد ميخواهيد از توابع اون استفاده کنيد اينطور نميتونيد به توابع کلاس های ديگه دسترسی داشته بشيد ميبايست متد Equa_1 رو تو هدر به سورت static تعريف کنيد

    static vector<vector<double>> Equa_1(double a, vector<vector<double>> b);

    و به اين صورت استفاده کنيد
    Class_Solver Solver;
    newh = Solver.Solver_1( Class_Equation::Equa_1(10, h) );

  3. #3

    نقل قول: کمک در ارسال یک متد از یک کلاس به متد دیگری از کلاس دیگر

    سلام
    می شه تابع عضو را فرستاد
    تو این روش که استفاده کردم تابع Solver_1 به صورت زیر در میاد

    template <typename F, typename T>
    vector<vector<double>> Class_Solver::Solver_1(F fc, T equa, double a, vector<vector<double>> b)
    {
    vector<vector<double>> Result;
    Result = std::mem_fn(fc)(equa,a, b);
    return Result;
    }

    بعد تو فایل main باید فایل Class_Solver.cpp را مثل یک هدر include کنید و دیگه به عنوان سورس به حساب نمیاد و نباید مستقل کامپایل بشه
    تو main هم به این صورت استفاده می کنید:

    newh = Solver.Solver_1(Class_Equation::Equa_1, Equation, 10, h);
    فایل های ضمیمه فایل های ضمیمه

  4. #4

    نقل قول: کمک در ارسال یک متد از یک کلاس به متد دیگری از کلاس دیگر

    نقل قول نوشته شده توسط negative60 مشاهده تاپیک
    شما بدون اينکه کلاس رو بسازيد ميخواهيد از توابع اون استفاده کنيد اينطور نميتونيد به توابع کلاس های ديگه دسترسی داشته بشيد ميبايست متد Equa_1 رو تو هدر به سورت static تعريف کنيد

    static vector<vector<double>> Equa_1(double a, vector<vector<double>> b);

    و به اين صورت استفاده کنيد
    Class_Solver Solver;
    newh = Solver.Solver_1( Class_Equation::Equa_1(10, h) );
    سلام و تشکر به خاط پاسخ شما، اما متاسفانه این روش کار نکرد

  5. #5

    نقل قول: کمک در ارسال یک متد از یک کلاس به متد دیگری از کلاس دیگر

    نقل قول نوشته شده توسط rahnema1 مشاهده تاپیک
    سلام
    می شه تابع عضو را فرستاد
    تو این روش که استفاده کردم تابع Solver_1 به صورت زیر در میاد

    template <typename F, typename T>
    vector<vector<double>> Class_Solver::Solver_1(F fc, T equa, double a, vector<vector<double>> b)
    {
    vector<vector<double>> Result;
    Result = std::mem_fn(fc)(equa,a, b);
    return Result;
    }

    بعد تو فایل main باید فایل Class_Solver.cpp را مثل یک هدر include کنید و دیگه به عنوان سورس به حساب نمیاد و نباید مستقل کامپایل بشه
    تو main هم به این صورت استفاده می کنید:

    newh = Solver.Solver_1(Class_Equation::Equa_1, Equation, 10, h);
    سلام با تشکر از شما،

    اما متاسفانه کد فوق خطا میدهد من هم نتوانستم خطا فوق را برطرف کنم !

    متن خطا


    Error    1    error C3867: 'Class_Equation::Equa_1': function call missing argument list; use '&Class_Equation::Equa_1' to create a pointer to member    c:\users\Ali\a\main.cpp    32



    کامپایلر مورد استفاده من هم VS2013 است، هرچند با TDM_GCC هم کامپایل نشد.Project1.rar

  6. #6

    نقل قول: کمک در ارسال یک متد از یک کلاس به متد دیگری از کلاس دیگر

    گفتم که نباید فایل Class_Solver.cpp جزء سورس باشه باید هدر باشه من با دستور زیر کامپایل می کنم (اگرچه برنامه شما در محاسباتی که در vector کردید باز هم ایراد داره)
    g++ -std=C++‎1y main.cpp Class_Equation.cpp

    توی ویژوال ++c هم خط زیر را به صورتی که نوشتم تغییر بدید درست می شه
    newh = Solver.Solver_1(&Class_Equation::Equa_1, Equation, 10, h);

  7. #7

    نقل قول: کمک در ارسال یک متد از یک کلاس به متد دیگری از کلاس دیگر

    نقل قول نوشته شده توسط rahnema1 مشاهده تاپیک
    گفتم که نباید فایل Class_Solver.cpp جزء سورس باشه باید هدر باشه من با دستور زیر کامپایل می کنم (اگرچه برنامه شما در محاسباتی که در vector کردید باز هم ایراد داره)
    g++ -std=C++‎‎1y main.cpp Class_Equation.cpp

    توی ویژوال ++c هم خط زیر را به صورتی که نوشتم تغییر بدید درست می شه
    newh = Solver.Solver_1(&Class_Equation::Equa_1, Equation, 10, h);
    سلام، متشکرم از این که راهنمایی کردید ..

    درست شد

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

  1. سوال: کمک در معرفی یک کلاس آپلود و تغییر اندازه عکس
    نوشته شده توسط jionelmessi در بخش PHP
    پاسخ: 2
    آخرین پست: چهارشنبه 20 شهریور 1392, 13:31 عصر
  2. سوال: کمک در ارسال یک مقدار بین 2 پروژه از یک سایت تحت asp.net
    نوشته شده توسط hesam_mahmoodi در بخش ASP.NET Web Forms
    پاسخ: 4
    آخرین پست: سه شنبه 11 تیر 1392, 16:09 عصر
  3. سوال: کمک در ارسال یک کوئری SQL
    نوشته شده توسط رضا قربانی در بخش PHP
    پاسخ: 6
    آخرین پست: پنج شنبه 31 فروردین 1391, 19:31 عصر
  4. کمک در ارسال یک کوئری به SQL
    نوشته شده توسط رضا قربانی در بخش MySQL
    پاسخ: 0
    آخرین پست: چهارشنبه 30 فروردین 1391, 22:15 عصر

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

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