שאלה ממבחן ב-C++: ניתוח קוד קצר - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

שאלה ממבחן ב-C++: ניתוח קוד קצר


רוטב

Recommended Posts

במבחן נתון הקוד הבא ויש לומר האם הוא מתקמפל ומדוע. ב-Visual Studio מתקבלת שגיאת הקומפילציה "'initializing' : ambiguous conversions from 'D *' to 'A *'" ושאלתי היא - למה בדיוק?


#include <iostream>
using namespace std;

class A
{
public:
void print() const
{
cout << 'A' << endl;
}
};

class B : public A
{
public:
void print() const
{
cout << 'B' << endl;
}
};

class C : public A
{
public:
void print() const
{
cout << 'C' << endl;
}
};

class D : public B, public C
{
public:
void print() const
{
cout << 'D';
}
};

void main()
{
A *p = new D;
p->print();
}

קישור לתוכן
שתף באתרים אחרים

http://msdn.microsoft.com/en-us/library/sa77cce8.aspx

זה למה. יש לך בתוך אובייקט מסוג D שתי מופעים של אובייקט מסוג A (אחד ב B ואחד ב C וזה בגלל ש A לא נורש וירטואלית) ולכן הקומפיילר לא יודע למי מהם אתה מתכוון. הפתרון נמצא שם גם.

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...