سؤال

أعلم أن الأسئلة تبدو غامضة، لكن لم أتمكن من التفكير في أي طريقة أخرى لصياغتها، ولكن، هل من الممكن القيام بشيء كهذا:

#include<iostream>

class wsx;

class wsx
{
public:
wsx();
}

wsx::wsx()
{
std::cout<<"WSX";
}

?

هل كانت مفيدة؟

المحلول

نعم، هذا ممكن. وفيما يلي مجرد تعلن wsx

class wsx;

ويسمى هذا النوع من الإعلان إعلان إلى الأمام، لأنه هو مطلوب عندما تشير فئتين لبعضها البعض:

class A;
class B { A * a; };

class A { B * b; };

واحد منهم يحتاج إلى أن أعلن الأمام ثم.

نصائح أخرى

وهذا هو تعريف الفئة

class wsx
{
public:
wsx();
}

وهذا هو تعريف منشئ

wsx::wsx()
{
std::cout<<"WSX";
}

وهذا هو إعلان الأمام تقول الطبقة سيتم تحديد مكان

class wsx;

في المثال الخاص بك،

class wsx; // this is a class declaration

class wsx  // this is a class definition
{
public:
wsx();
}

وهكذا نعم، وذلك باستخدام class wsx; أنه من الممكن أن يعلن فئة دون تحديد ذلك. يتيح إعلان درجة التي أعلن مؤشرات وإشارات إلى تلك الفئة، ولكن ليس مثيلات الفئة. المترجم يحتاج تعريف الفئة لذلك يعرف مقدار الذاكرة لتخصيص لمثيل للفئة.

نعم.و لكنها لا من الممكن تحديد فئة دون الإعلان عنها.

لأن: كل تعريف هو أيضا إعلان.

وأنت لم تحدد الطبقة. انه ليس لديها أعضاء البيانات، ولكن هذا ليس ضروريا.

ولست متأكدا ما تعنيه. الرمز الذي تم لصقه يبدو الصحيح.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top