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

مشكلة في ال class لغة cpp

بدأه Slimane.DZ في 10 أكتوبر 2014 · 2 رد · 1,181 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورخمة الله وبركاته 

 

عندي مشكلة في كلاس انشأته ببرنامج Code::Blocks  بس ما رضى يشتغل ما ادري ما السبب

علما اني متابع دورة open classrooms لتعليم لغة c++ درس 

ونسخت الكود كما هو في الموقع بس دون فائدة  :( 

لم يعمل فلا ادري هل السبب من البرنامج ام من الكود سورس نفسه 

 

واليكم صورة توضح المشكلة بملف main.cpp

 

 

3EaJ61.png

 

وهذا كود سورس الخاص ب Duree.cpp

#include <iostream>
#include "Duree.h"

Duree::Duree(int h,int m,int s):m_Heur(h),m_Min(m),m_Sec(s)
{

}

bool Duree::EstEgal(Duree const& b)const
{
    if(m_Heur==b.m_Heur && m_Min==b.m_Min && m_Sec==b.m_Sec) return true;
    else return false;
}

bool operator==(Duree const& a,Duree const& b)
{
    return a.EstEgal(b);
}

وكود Duree.h

#ifndef DUREE_H_INCLUDED
#define DUREE_H_INCLUDED

class Duree
{
public:
    Duree(int h=0,int m=0,int s=0);
    bool EstEgal(Duree const& a)const;

private:
    int m_Heur;
    int m_Min;
    int m_Sec;
};
#endif // DUREE_H_INCLUDED

اين المشكلة بارك الله فيكم 

#2

المشكلة لديك أن الدالة operator== معرفة في الملف Duree.cpp، فلا يمكن رؤيتها من main.cpp.

 

1- ممكن أن تعلن عنها في الملف الرأسي:

...
};

bool operator==(Duree const& a,Duree const& b);

#endif // DUREE_H_INCLUDED

2- أو ممكن أن تنقل الدالة للملف الرأسي وتزيلها من Duree.cpp، يفضل جعلها inline لأنها صغيرة:

...
};

inline bool operator==(Duree const& a,Duree const& b)
{
  return a.EstEgal(b);
}

#endif // DUREE_H_INCLUDED

3- أو الأفضل أن تستبدل الوظيفة EstEgal بـoperator==، في تعريف الفئة:

...
class Duree
{
public:
    Duree(int h=0,int m=0,int s=0);
    bool operator==(Duree const& other) const;
private:
...

وفي الملف Duree.cpp:

#include <iostream>
#include "Duree.h"

Duree::Duree(int h,int m,int s):m_Heur(h),m_Min(m),m_Sec(s)
{

}

bool Duree::operator==(Duree const& other) const
{
  return m_Heur == other.m_Heur &&
         m_Min == other.m_Min &&
         m_Sec == other.m_Sec;
}

تم تعديل هذه المشاركة بواسطة Mr.B في 11 أكتوبر 2014 في 16:45

2
#3

 بارك الله فيك 

تم حل المشكل بنجاح 

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

يغلق للانتهاء.

تم تعديل هذه المشاركة بواسطة Slimane.DZ في 19 أكتوبر 2014 في 13:52

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