LINUX.ORG.RU

> template <class A,class B,class C,class D> CMap<A,B,C,D>::Assoc* CMAP<A,B,C,D>::NewAssoc() { ...

Вообще  перед CMap<A,B,C,D>::Assoc* напиши typename и еще имхо  s/CMAP/СMap/ или s/CMap/CMAP 

С т.з. языка это больше всего похоже на внешенее определение функции-мемебра NewAssoc() шаблонного класса CMAP<...>

BottleHunter
()

Re:

забей на тайпдефы - баловство все это;-)

во первых определись CMap или CMAP?

эта констукция - внешнее определение функции члена NewAssoc() темплайтного класса CMAP, возвращающей пойнтер на структуру (или класс) определенную в том же CMAP.

Дальше вопрос в том что это за Assoc?

AIv ★★★★★
()
Ответ на: Re: от AIv

Re:

> забей на тайпдефы - баловство все это;-)

typedef лучший друг программиста (С++), если ты это еще не понял,
то тебе предстоит многому научится

aton
()
Ответ на: Re: от aton

Re:

> typedef лучший друг программиста (С++), если ты это еще не понял, то тебе предстоит многому научится

*C++* ? в чем же столь глубокая разница между foo1 и foo2 при объявлении:

struct foo1 {
    int a;
};

и

typedef struct {
    int a;
} foo2;

// wbr

klalafuda ★☆☆
()
Ответ на: Re: от aton

Re:

Мне безусловно предстоит ище учиться и учиться. А тебе, считающему что тайпдеф лучший друг прораммиста на С++ учиться уже бесполезно...

Это должна быть ну очень выморочная конструкция, ИМНО, что бы тайпдеф был оправдан. В некоторых библиотеках такие есть, да... там это необходимость. Но людей которые оправданно такие вещи пишут очень немного. Лично я вполне обходился, обхожусь и собираюсь обходиться без тайпдефов...

AIv ★★★★★
()
Ответ на: Re: от klalafuda

Re:

Ни какой, но в ANSI C, тебе пришлось бы писать:

void foo()
{
struct foo1 f1
foo2 f2
}

разницу заметил?

aton
()
Ответ на: Re: от AIv

Re:

> Это должна быть ну очень выморочная конструкция

typedef std::list<std::string> string_list;

Это по твоему 'выморочная конструкция'?

Видимо молодой человек не понимает зачем вообще нужен такой
замечательный механизм, как typedef.



aton
()
Ответ на: Re: от aton

Re:

> Ни какой, но в ANSI C, тебе пришлось бы писать:

вообще то мы про C++ и это несколько другая степь.

// wbr

klalafuda ★☆☆
()
Ответ на: Re: от klalafuda

Re:

я тебе и ответил что никакой.

однако и здесь typedef может быть очень даже к месту:

typedef struct foo {
int a;
} *foo_ptr;




aton
()
Ответ на: Re: от aton

Re:

typedef struct foo { int a; } *foo_ptr; на вкус и цвет фламастеры разные. IMHO определение void x(foo *arg) значительно понятнее, чем void x(foo_prt arg) независимо от того, C это или C++. ps: будучи последовательным, для **foo вы будите определять foo_ptr_ptr? // wbr

klalafuda ★☆☆
()
Ответ на: Re: от klalafuda

Re:

Я вообще так писать не буду, это был пример.

aton
()
Ответ на: Re: от aton

Re:

>typedef std::list<std::string> string_list;

>Это по твоему 'выморочная конструкция'?

using namespace std;

list<string> звучит намного лучше чем string_list, ортогональнее я бы сказал. string_list вполне может означать список сткро в каком нить классе например, или еще какую хрень, а list<string> совершенно однозначен. Требовать от пользователя кажный раз лазить наверх хидера, что б посмотереть на очередной тайпдеф-аборт фантазии аффтора, моветон. дА и сам ты через полгода забудешь что этот string_list значит...

Примитивность приведенного примера не очень характеризует твой уровень, старина aton...даже в

map< pair<string, int>, list<string>, less<pair<string, int> > > ...

я бы не фак что стал тайпдефить - надо экономить мозги а не место на экране.

>Видимо молодой человек не понимает зачем вообще нужен такой замечательный механизм, как typedef.

Да, скоко пишу - никак не пойму нахера оно надо... и студентам толком объянить не могу. Но замечательным я бы этот механизм ни разу не назвал - возьми дефайн что ли, раз так нейметься, куда гибче получеться. Страутсруп кстати тоже об этом деле весьма нелицеприятно отзывался...

AIv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.