الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

هل يمكن اضافة function داخل ملف كود دون تضمينها داخل فئة class

بدأه MOHAMED FATHEI في 19 مايو 2010 · 5 رد · 658 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

فى بداية تعلمى ل ++C

وجدت مثال فى كتاب C++ primer يحتوى على دالة function خارج الدالة الرئيسية main

ولكنها ايضا ليست مضمنة داخل فئة class

والمثال كالتالى

# include <iostream>
using namespace std;

#include <cmath>

double power(double,double);

int main()
{

	double base;
	double power;
	cout << "Enter the number : ";
	cin >> base;
	cout << "Enter the power number : ";
	cin >> power;
	cout << base 
		 << " ^ " 
		 << power 
		 << " = " 
		 << power(base,power)
		 << endl;
	cin.get();
	cin.get();
	return 0;

}

double power(double b,double e)
{
	return std::pow(b,e);
}

وعند عمل ترجمة compile للملف ينتج خطأ

كالتالى

post-165385-12742727975142_thumb.png

ولم يعمل هذا الكود الا بعد اضافة هذه الدالة الى فئة ثم استدعاء كائن object من هذه الفئة ثم استدعاء الدالة power من خلاله

اى بعد تعديل الشفرة لتصبح كالتالى

# include <iostream>
using namespace std;

#include <cmath>

double power(double,double);

class Mine
{

	public:

		double power(double b,double e)
		{
			return std::pow(b,e);
		}

};// end of class mine

int main()
{

	double base;
	double power;
	Mine myMine; // create object of class mine
	cout << "Enter the number : ";
	cin >> base;
	cout << "Enter the power number : ";
	cin >> power;
	cout << base 
		 << " ^ " 
		 << power 
		 << " = " 
		 << myMine.power(base,power)
		 << endl;
	cin.get();
	cin.get();
	return 0;

}

علما بانى استخدم GCC Compiler

فهل هذه مشكلة فى المترجم الخاص بى

ام انها خطأ فى الكتاب (احتمال بعيد جدا)

ارجو المساعدة لانها لو كانت خطأ فى المترجم compiler فربما يتسبب لى فى تعلم خاطئ لهذه اللغة

وهذه طبعا مشكلة(ما بنى على باطل فهو باطل)

تحياتى


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#2

لديك متغير و دالة يحملان نفس الاسم في نفس الـ scope, قم بتغيير اسم احداهما, أو ضع الدالة في namespace:

# include <iostream>
#include <cmath>
using namespace std;

double power(double,double);

int main()
{
	double base;
	double e;
	cout << "Enter the number : ";
	cin >> base;
	cout << "Enter the power number : ";
	cin >> e;
	cout << base 
		<< " ^ " 
		<< e 
		<< " = " 
		<< power(base,e)
		<< endl;
	cin.get();
	cin.get();
	return 0;

}

double power(double b,double e)
{
	return std::pow(b,e);
}
1
#3

الف شكر اخ خالد

فعلا المشكلة انحلت

Khaled.Alshaya كتب:

لديك متغير و دالة يحملان نفس الاسم في نفس الـ scope, قم بتغيير اسم احداهما, أو ضع الدالة في namespace:

ما شتت تفكيرى هو انى لدى خبرة فى Java واستغربت تعريف الدالة خارج الفئة ولم انتبه لاسماء المتغيرات

الحمد لله ال Compiler سليم :lol: يمكننى المتابعة

تحملونى لفترة قصيرة وبعدها ابدأ فى المساعدة ان شاء الله

تحياتى


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#4

عندما تقوم بتعريف دالة داخل فئة مع كتابة body الدالة داخل الفئة تسمى in line function

لكن عادة ما نقوم بتعريف الدالة داخل الفئة ثم كتابة الbody خارج الفئة

in line finction

class test{
private:
............
public:
int sum(int x,int y){return x+y;}

};

كتابة ال body خاصة الدالة خارج الفئة

int test::sum(int x,int y){
return x+y;
}

لكن عندما يكون برنامجك لا يعتمد على oop تستطيع كتابة الدالة كما وضح فى الكود بتاع حضرتك

00020309t.gif

1958_1963.gif
#5

شكرا للاستاذة اسراء

على مشاركتها ومرورها الكريم على الموضوع

تحياتى


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#6

انا استاذة؟!

لما نروح نروح منتدى الجافا :mad:

00020309t.gif

1958_1963.gif

مواضيع مشابهة