forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Юмор (http://forum.boolean.name/forumdisplay.php?f=35)
-   -   Весёлые картинки =) (http://forum.boolean.name/showthread.php?t=3017)

Gector 18.03.2012 21:59

Ответ: Веселые картинки =)
 


m_512 19.03.2012 01:26

Ответ: Веселые картинки =)
 

pax 19.03.2012 11:22

Ответ: Веселые картинки =)
 

m_512 20.03.2012 00:53

Ответ: Веселые картинки =)
 

ingko 20.03.2012 12:54

Ответ: Веселые картинки =)
 

ingko 21.03.2012 12:52

Ответ: Веселые картинки =)
 

m_512 21.03.2012 16:24

Ответ: Веселые картинки =)
 

impersonalis 21.03.2012 22:50

Ответ: Веселые картинки =)
 
продолжим (вынес срач)

impersonalis 22.03.2012 01:35

Ответ: Веселые картинки =)
 
Вложений: 1
Вложение 16426
Вообще, первое решение доставляет уже чисто эстетически (опустим пока размышления о том, какой метод в какой ситуации быстрее). Хотя, именно его развите позволяет решить (просто чудовищно "изящно") проблему (слить весь сурс: два класса и неймспейс - в один файл).
Во-вторых, первое решение приводит к неразрешимой ситуации.
Код дико упрощён (написан с нуля таким образом, чтобы содержать ту же проблему что и оригинал), потому не совсем понятными могут показаться некоторые решения (разбиение на классы): будем считать, что это данность.
Класс-шаблон, вместе с ним объявлено используемое им пространство имён ASPACE, которое прекрасно видно из main.cpp. Пространство имён содержит перечисление (Aenum), задающее допустимые значения индексов массива данных (в данной реализации опущен). Для обработки своих данных, класс использует другой класс - B, который тоже пришлось параметризовать.
Код:

//A.cpp
#ifndef A_INCLUDED
#define A_INCLUDED
#include "B.cpp"

namespace ASPACE{
    enum Aenum{F,FF,FFUU};
}
using namespace ASPACE;
template<class Atype>
class A{
    private:
        Atype X;
        Aenum Y;
        B<Atype> *Z;
};
#endif

Класс B содержит некоторые методы, обрабатывающие данные класса A.
Код:

//B.cpp
#include "A.cpp"
#ifndef B_INCLUDED
#define B_INCLUDED
template<class Btype>
class B{
    private:
        void F(Btype m[]);
        Btype X;
};
template<class Btype>
void B<Btype>::F(Btype m[]){
    this->X=m[ASPACE::FFUU];
}
#endif

В итоге получается, что определение A требует B, а определение (и т.к. это одна единица трансляции) и реализация B, хотят ASPACE, описанный в единице трансляции, содержащей A. В простом случае ситуация решается так:
Код:

class w;

class q{
    w *var;
};
///
class w{
    int var;
};

Тут выкрутится не удалось:
B.cpp|13|error: 'ASPACE' has not been declared|

Ну и наконец в-третьих: какого хрена производители пилят непонятные свистелки и расширения стандарта (хотя, понятно: код потом фиг перетянешь на другой компилятор), не реализовав поддержку стандартных директив?
В-четвёртых: мне одному кажется, что поддержка шаблонов в разных компиляторах сделана так своеобразно, что выглядит как костыль?

impersonalis 22.03.2012 22:08

Ответ: Веселые картинки =)
 


10 фактов о великих «двоечниках»

Gector 22.03.2012 22:17

Ответ: Веселые картинки =)
 
В тему про снег:

impersonalis 22.03.2012 23:47

Ответ: Веселые картинки =)
 
Вложений: 1
Отличный набор аватарок ) // http://ru.wikipedia.org/wiki/Дадаизм

(срач на тему искусства - сразу в реакторе создавайте, а сюда - ссылку)

Nuprahtor 22.03.2012 23:58

Ответ: Веселые картинки =)
 
Мне понравилось имитация русского текста в супрематизме.

impersonalis 23.03.2012 00:00

Ответ: Веселые картинки =)
 
Цитата:

Сообщение от Nuprahtor (Сообщение 223415)
Мне понравилось имитация русского текста в супрематизме.

вариация

ABTOMAT 23.03.2012 00:39

Ответ: Веселые картинки =)
 
Это ж Маяковский. В 11 классе у меня был учебник с такой картинкой.


Часовой пояс GMT +4, время: 12:32.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot