يمكن وصفها أسماء أسلوب C ++ التي كتبها اسم الفئة، في رأس؟

StackOverflow https://stackoverflow.com/questions/688802

سؤال

والسؤال بسيط، هل هذا صحيح C ++:

class Foo
{
    void Foo::doSomething();
};

والهدف من السؤال: هو أن الاستخدام المتكرر للاسم الفئة والقولون مزدوج قبل اسم الأسلوب صالحة <م> داخل تعريف فئة

وأنا أواجه مشكلات ترجمة التعليمات البرمجية التي يقوم بذلك ز باستخدام ++ 4.2.3. أنا أحب أن أرى إشارة إلى شيء يصف بناء الجملة هنا، قبل حفر في وتغيير الرمز. أو الانتقاص من المترجم. هذا لا بناء مع g ++ 3.3.6.

والخطأ انني اتلقى هو (تقريبا):

Foo.h:3: error: extra qualification ‘Foo::’ on member ‘doSomething’

وفعلت جوجل، ولكن لا يمكن أن يأتي بشيء. ليس لدي المعيار، وحتى لو فعلت ذلك ربما تأخذ مني الكثير من الوقت للعثور على أي شيء رسمي. أنا لست C ++ لغة محام.

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

المحلول

وأخذت نظرة على معيار، فإن القسم 9.2 تكون جزء ذات الصلة. أنا لست كبيرة مع BNF لكنني لا أرى أي شيء في BNF لأعضاء الفئة التي من شأنها أن تشير إلى وسمح هذا. حتى يدعى معرف "غير مؤهلين معرف" في BNF.

وتغير G ++ السلوك في الإصدار 4.1، وعلى ما يبدو الكثير من المجمعين أخرى تقبل هذا، ولكن أنا لم أر قط هذا النمط يستخدم وليس لدي أي فكرة لماذا أي شخص أن يفعل ذلك. لأنه يبدو أن لا يؤدي خطأ على مجموعة واسعة جدا من المجمعين، قد يكون هناك سبب تاريخي لهذا النمط، ولكن بقدر ما استطيع ان اقول انها في الواقع ليست صالحة.

وكانت إشارة جيدة الوحيدة التي وجدت من خلال جوجل هذه الصفحة ، الذي يسعى فقط لتوضيح بعض التغييرات في G ++ 4.1.

نصائح أخرى

ومثل دان، نظرت إلى ستاندرد دون نتائج حاسمة. حاولت التعليمات البرمجية الخاصة بك مع كومو على الخط مترجم (وتعتبر متوافقة مع معظم القياسية في العالم) وحصلت على:

<اقتباس فقرة>   

والسطر 3: خطأ: اسم مؤهل ليست   يسمح في تعريف عضو

إذا كنت ترغب في أخذ هذا أبعد من ذلك، أقترح نشر سؤال على في comp.lang.c ++. أدار الأخبار، كما أن هناك أكثر من الكثير C ++ المحامين لغة هناك من هناك هنا.

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