Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Eten от Март 04, 2011, 04:24



Название: Проблема с созданием автом. конструктора в своем классе для строк.
Отправлено: 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*), но ничего помогает. А как надо написать параметр в конструкторе моего класса, чтобы можно было делать так, как написано в коде выше?


Название: Re: Проблема с созданием автом. конструктора в своем классе для строк.
Отправлено: Eten от Март 04, 2011, 04:41
М-да, утро вечера мудренее. Только что, сам на вопрос ответил. Но все же прошу меня поправить, если я в чем-то ошибаюсь.  ;)

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