информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Страшный баг в WindowsПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[C++] Подскажите как красивее сделать 21.01.02 10:38  Число просмотров: 818
Автор: leo <Леонид Юрьев> Статус: Elderman
<"чистая" ссылка>
> > 1) имеется шаблон:
> >
template<bool param> class T> > {
> > public:
> >   int data_field;
> >   void some_method()
> >   {
> >	 if(param)
> >	   data_field++;
> >	 else
> >	   data_field--;
> >   }
> > };

---
> >
>
> А если в этот шаблон вторым параметром поставить
> data_field?

Параметром шаблона может быть либо константа, либо класс (тип), но никак не переменная.
<programming>
[C++] Подскажите как красивее сделать 19.01.02 05:16  
Автор: leo <Леонид Юрьев> Статус: Elderman
Отредактировано 19.01.02 05:18  Количество правок: 1
<"чистая" ссылка>
Имеется задача и ее решение, хотелось бы решение сделать более красивым.
Упрошенно:

1) имеется шаблон:
template<bool param> class T
{
public:
  int data_field;
  void some_method()
  {
    if(param)
      data_field++;
    else
      data_field--;
  }
};

---

2) имеется class-объединение:
class U
{
public:
  union
  {
    int data_field;
    T<true> on_true;
    T<false> on_false;
  };

  C(int value)
  {
    data_field = value;
  }

  ~C()
  {
    data_field = 0;
  }

  void do_some(bool target)
  {
    if(target)
      on_true.some_method();
    else
      on_false.some_method();
  }
};

---

В итоге, в U есть семантически три data_field, которые "географически" распологаются в одном месте.
Мне хочется иметь не три data_field, а одно, как сементически, так и "географически".

P.S.
Компилятор VC C++ 7.0
[C++] Подскажите как красивее сделать 21.01.02 00:48  
Автор: Sandy <Alexander Stepanov> Статус: Elderman
<"чистая" ссылка>
> 1) имеется шаблон:
>
template<bool param> class T> {
> public:
>   int data_field;
>   void some_method()
>   {
>     if(param)
>       data_field++;
>     else
>       data_field--;
>   }
> };

---
>

А если в этот шаблон вторым параметром поставить data_field?
[C++] Подскажите как красивее сделать 21.01.02 10:38  
Автор: leo <Леонид Юрьев> Статус: Elderman
<"чистая" ссылка>
> > 1) имеется шаблон:
> >
template<bool param> class T> > {
> > public:
> >   int data_field;
> >   void some_method()
> >   {
> >	 if(param)
> >	   data_field++;
> >	 else
> >	   data_field--;
> >   }
> > };

---
> >
>
> А если в этот шаблон вторым параметром поставить
> data_field?

Параметром шаблона может быть либо константа, либо класс (тип), но никак не переменная.
[C++] Подскажите как красивее сделать 21.01.02 15:01  
Автор: Xan Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Честно говоря не совсем понял зачем тебе все это. Разве нелзя сделать что-то типа :
class U
{     int data_field;
      void some_method(bool param)
      {     if(param)   data_field++;
            else
            data_field--;
      }
      friend class A; // или
      friend void classB::SomeMetod( );
 };
      

---
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach