Re[3]: class::MyClass variable;
От: посетитель rsdn.life  
Дата: 20.08.09 11:53
Оценка: +2
Здравствуйте, Аноним, Вы писали:

П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;
От: Alexey F  
Дата: 20.08.09 11:15
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А>
А>class MyClass {};

А>void tst() {
А>    class::MyClass variable;
А>}
А>

А>Кто может объяснить для чего нужны такого вида объявления class::class_name ?


Имелось ввиду:
class MyClass {};

void tst() {
    class     ::MyClass variable;
}

Т.е. variable — это объект класса MyClass, объявление которого находится в глобальном пространстве имён. В данном случае "class" в void tst() — лишнее и можно переписать без него.
class::MyClass variable;
От: Аноним  
Дата: 20.08.09 11:07
Оценка:
class MyClass {};

void tst() {
    class::MyClass variable;
}

Кто может объяснить для чего нужны такого вида объявления class::class_name ?
Re: class::MyClass variable;
От: посетитель rsdn.life  
Дата: 20.08.09 11:14
Оценка:
Здравствуйте, Аноним, Вы писали:

А>
А>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;
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[2]: class::MyClass variable;
От: посетитель rsdn.life  
Дата: 20.08.09 11:16
Оценка:
Здравствуйте, посетитель 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);
...

Вот и возник вопрос: А зачем?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.