Простой вопрос, это действительный C++:Может ли имя метода C++ быть присвоено именем класса в заголовке?
class Foo
{
void Foo::doSomething();
};
Суть вопроса: в том, что повторное использование имени класса и двойного двоеточия перед именем метода действительного внутри декларация класса?
У меня возникли проблемы с компиляцией кода, который делает это с помощью g ++ 4.2.3. Мне бы хотелось увидеть ссылку на что-то, описывающую синтаксис здесь, прежде чем копать и менять код. Или понизить компилятор; это происходит с помощью g ++ 3.3.6.
Ошибка я получаю (примерно):
Foo.h:3: error: extra qualification ‘Foo::’ on member ‘doSomething’
Я сделал Google, но не мог придумать что-нибудь. У меня нет стандарта, и даже если бы я это сделал, мне понадобилось бы некоторое время, чтобы найти что-нибудь авторитетное. Я не юрист на языке C++.
Visual Studio (2008) принимает «Foo ::» –
Да, я знаю ... Но я пытаюсь создать код с помощью g ++, и они часто отличаются тем, что они принимают, а не. Или, с моей точки зрения, VC, кажется, что-то принимает, а g ++ может быть разборчивым. :) – unwind
Я бы сказал, что Foo :: был в лучшем случае ненужным и в худшем случае недействительным. Поэтому, на мой взгляд, вы совершенно оправданы в его удалении. – markh44