Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[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( );
};
---
|
|
|