ورود

View Full Version : مشکل در namespace ها



sourcecode
چهارشنبه 26 اسفند 1394, 14:28 عصر
اشکال من کجاست که برنامم خطا داره ... من دارم تابع sin رو از کلاس math.h صدا میزنم ... تو برنامم یه تابعی همنام به نام sin ایجاد کردم ولی برنامه خطا داره
#include "stdafx.h"
#include <iostream>
#include <math.h>
using namespace std;
float sin(float x)
{
float y = x;
return y;
}
int main()
{
cout << std::sin(23.09) << sin(12.23);
cout << endl;
system("pause");
return 0;
}

error C2084: function 'float sin(float) throw()' already has a body
من تو این خط چطوری به کامپایلر بفهمونم که منظورم تابع sin کلاس math.h هست یا تابع sin که خودم تعریف کردم ؟
cout << std::sin(23.09) << sin(12.23);

کامبیز اسدزاده
پنج شنبه 27 اسفند 1394, 08:26 صبح
اشکال من کجاست که برنامم خطا داره ... من دارم تابع sin رو از کلاس math.h صدا میزنم ... تو برنامم یه تابعی همنام به نام sin ایجاد کردم ولی برنامه خطا داره
#include "stdafx.h"
#include <iostream>
#include <math.h>
using namespace std;
float sin(float x)
{
float y = x;
return y;
}
int main()
{
cout << std::sin(23.09) << sin(12.23);
cout << endl;
system("pause");
return 0;
}

error C2084: function 'float sin(float) throw()' already has a body
من تو این خط چطوری به کامپایلر بفهمونم که منظورم تابع sin کلاس math.h هست یا تابع sin که خودم تعریف کردم ؟
cout << std::sin(23.09) << sin(12.23);

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

به این صورت :


#include <iostream>
#include <math.h>

using namespace std;

namespace mynamespace {
float sin(float x)
{
float y = x;
return y;
}
}


int main()
{
cout << std::sin(23.09) << mynamespace::sin(12.23);
cout << endl;
system("pause");
return 0;
}