Russian Qt Forum
Ноябрь 25, 2024, 13:02 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с созданием автом. конструктора в своем классе для строк.  (Прочитано 2700 раз)
Eten
Гость
« : Март 04, 2011, 04:24 »

Для начала код этого самого класса:
Код:
//Строковый
class NString{
public:
    NString(QString Value = "") {IsNull(Value); this->data._id = -1; this->data._constvalue = false; this->data._name = "";}

    qint32 ID() const {return this->data._id;}
    void setID(qint32 ID) {this->data._id = ID;}
    bool ConstValue() const {return this->data._constvalue;}
    void setConstValue(bool ConstValue) {this->data._constvalue = ConstValue;}
    QString Name() const {return this->data._name;}
    void setName(QString Name) {this->data._name = IsNull(Name);}
    void setValue(QString Value) {this->data._value = IsNull(Value);}
    QString Value() const {return this->data._value;}

    operator QString() {return this->Value();}

private:

    QString IsNull(QString Value) const {if (Value != NULL) return Value; else return "";}

    struct NData {
    //если идентификатор равен -1, значит это либо временная переменная, либо константное значение
    qint32 _id;
    //константные или временные значения имен не имеют, только переменные.
    QString _name;
    QString _value;
    //это указывает на константное значение
    bool _constvalue;
    };
    NData data;
};

Я полагал, что этого хватить, но при попытке написать:
Код:
NString string = "text";

Выдается ошибка: "no match for call to (NString)(const char[5])". Я понял это сообщение, как отсутствие конструктора, принимающего const char. Но вот проблема в том, что я перепробовал все варианты конструкторов из QString (даже const char*), но ничего помогает. А как надо написать параметр в конструкторе моего класса, чтобы можно было делать так, как написано в коде выше?
Записан
Eten
Гость
« Ответ #1 : Март 04, 2011, 04:41 »

М-да, утро вечера мудренее. Только что, сам на вопрос ответил. Но все же прошу меня поправить, если я в чем-то ошибаюсь.  Подмигивающий

В общем тут оказалось достаточно следующих конструкторов: NString(), NString(QString Value), NString(const char* Value). Второй нужен для принятия уже готового QString.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.125 секунд. Запросов: 20.