Использование класса без определения переменной класса - PullRequest
0 голосов
/ 04 мая 2020

Я хотел бы сделать что-то вроде:

class StrToHex {
public:
    ??? StrToHex(std::string a) {
        return class_method1(a) + class_method2(a);
    }
private:
    std::string method1(std::string a);
    std::string method2(std::string a);
}
int main() {
    std::string var = StrToHex("FF1042");
}

Я знаю, что могу использовать StrToHex :: MyFun c () или создать объект класса, но есть ли способ обойтись без него

1 Ответ

1 голос
/ 04 мая 2020

В C ++ конструктор не может возвращать значение. Таким образом, вы не можете указать тип возвращаемого значения для конструктора. Но есть и другие альтернативные способы достижения того же. Я использовал оператор приведения std :: string.

class StrToHex {
public:
StrToHex(std::string a) {
    _data = method1(a) + method2(a);
};

operator std::string()
{
    return _data;
};
private:
std::string method1(std::string a)
{
    return std::string("Hi " + a);
};

std::string method2(std::string a)
{
    return std::string(" again " + a);
};

std::string _data;
};

int main() {
std::string var = StrToHex("FF1042");
std::cout << var;
}

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...