Re[3]: class::MyClass variable;
Здравствуйте, Аноним, Вы писали:
ПRL>>Где ты такое увидел? Такой синтаксис недопустим, АФАИК.
А>В одной из библиотек написано примерно такое:
А>А>...
А>typedef class ::Color Acolor;
А>...
А> void SetDataColor(const int & j,const class ::Color& pcolor);
А>...
А>
А>Вот и возник вопрос: А зачем?
Указание class/struct в таких случаях бывает нужно для того, чтобы разруливать ситуации, когда имя класса/структуры совпадает с именем переменной:
class X{};
int main()
{
int X = 1;
X xObj1; // error
class X xObj2; // ok
}
В твоем случае оно избыточно, а отсутствие пробела между class и :: нужно только для того, чтобы ввести в заблуждение читающего код.
Re: class::MyClass variable;
Здравствуйте, Аноним, Вы писали:
А>А>class MyClass {};
А>void tst() {
А> class :: MyClass variable;
А>}
А>
А>Кто может объяснить для чего нужны такого вида объявления class::class_name ?
Имелось ввиду:
class MyClass {};
void tst() {
class ::MyClass variable;
}
Т.е. variable — это объект класса MyClass, объявление которого находится в глобальном пространстве имён. В данном случае "class" в void tst() — лишнее и можно переписать без него.
От:
Аноним
Дата: 20.08.09 11:07
Оценка:
class MyClass {};
void tst() {
class :: MyClass variable;
}
Кто может объяснить для чего нужны такого вида объявления class::class_name ?
Re: class::MyClass variable;
Здравствуйте, Аноним, Вы писали:
А>А>class MyClass {};
А>void tst() {
А> class :: MyClass variable;
А>}
А>
А>Кто может объяснить для чего нужны такого вида объявления class::class_name ?
Где ты такое увидел? Такой синтаксис недопустим, АФАИК.
Re: class::MyClass variable;
От:
jazzer
Skype: enerjazzer
Дата: 20.08.09 11:15
Оценка:
Здравствуйте, Аноним, Вы писали:
А>А>class MyClass {};
А>void tst() {
А> class :: MyClass variable;
А>}
А>
А>Кто может объяснить для чего нужны такого вида объявления class::class_name ?
Не нужны, можешь выкинуть этот "class" нафиг, это тяжкое наследие Си.
Чтоб было понятнее, что этот код означает, я там вставил пробел в нужном месте.
Подсказка:
Если ты положишь MyClass в какое-нть именованное пространство имен, этот код перестанет компилироваться, пока не напишешь
class X::MyClass variable;
Re[2]: class::MyClass variable;
Здравствуйте, посетитель rsdn.life, Вы писали:
ПRL>Здравствуйте, Аноним, Вы писали:
А>>А>>class MyClass {};
А>>void tst() {
А>> class :: MyClass variable;
А>>}
А>>
А>>Кто может объяснить для чего нужны такого вида объявления class::class_name ?
ПRL>Где ты такое увидел? Такой синтаксис недопустим, АФАИК.
А, блин, похоже, для компилятора это то же самое что
class ::MyClass variable;
А то я очень удивился, когда комеау скомпилиовал.
Re[2]: class::MyClass variable;
От:
Аноним
Дата: 20.08.09 11:45
Оценка:
Здравствуйте, посетитель rsdn.life, Вы писали:
ПRL>Здравствуйте, Аноним, Вы писали:
А>>А>>class MyClass {};
А>>void tst() {
А>> class :: MyClass variable;
А>>}
А>>
А>>Кто может объяснить для чего нужны такого вида объявления class::class_name ?
ПRL>Где ты такое увидел? Такой синтаксис недопустим, АФАИК.
В одной из библиотек написано примерно такое:
...
typedef class ::Color Acolor;
...
void SetDataColor(const int & j,const class ::Color& pcolor);
...
Вот и возник вопрос: А зачем?
Пока на собственное сообщение не было ответов, его можно удалить.
Удалить