конструктор для struct
От: Аноним  
Дата: 07.12.09 21:49
Оценка:
нужно поюзать определенную структуру
для нее определил нужные мне операторы
operator=
operator<
operator>

но вот не задача нужно еще переопределить дефолтовый конструтор не внедряясь в саму структуру
тоесть в ее декларирование

как известно в классах(а может и в структурах) всегда определяеться конструктор по умолчанию
так вот
можно ли как то переопределить этот конструктор — если можно, для стукрутуры, не изменяя ее

вот к примеру есть
struct myval
{
int value[34];
};

и хочеться сделать так
myval::myval()
{
memset(&value[0], 0, sizeof(value));
}

что бы при обьявлении ее в классе
myval m_cval;

запускался конструктор и инициализировал значения

думал так же над вариантом сделать наследование
и в наследнике уже использовать конструктор
но не хотелось бы все так усложнять, потому что хочеться использовать все тот же myval а не его наследник с другим именем

так же думал над тем что бы взять myval в неймспейс и унаследовать опять с именем myval
но тоже не очень удобно для меня получаеться

поэтому ломаю голову
Re: конструктор для struct
От: -MyXa- Россия  
Дата: 07.12.09 23:37
Оценка:
Здравствуйте, Аноним, Вы писали:

А>и хочеться сделать так

А>myval::myval()
А>{
А> memset(&value[0], 0, sizeof(value));
А>}

А>что бы при обьявлении ее в классе

А>myval m_cval;

А>запускался конструктор и инициализировал значения


Если кроме нулей ничего не надо, то так:
struct other
{
    myval m_cval;

    other()
        : m_cval()
    {
    }
};

А понадобится локальная переменная, то так:
myval val = {};
Если не поможет, будем действовать током... 600 Вольт (C)
Re: конструктор для struct
От: Erop Россия  
Дата: 08.12.09 00:02
Оценка:
Здравствуйте, Аноним, Вы писали:

А>что бы при обьявлении ее в классе

А>myval m_cval;

А>запускался конструктор и инициализировал значения


Ну, как вариант, заюзать вариацию на тему:
template<typename T> struct inited_struct : T {
    inited_struct() : T() {}
    static inited_struct GetInited() { return inited_struct(); }
};
и в классах писать не myval m_cval, а
inited_struct<myval>  m_cval;
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.