Функция шаблона вариада, которую я не могу исправить самостоятельноC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Функция шаблона вариада, которую я не могу исправить самостоятельно

Сообщение Anonymous »

I can't implement correctly the function I need.
That function should take one or more parameters, convert each parameter into QString, and append them all together, with a provided separation character (called Delimiter below).
Each provided parameter will always be: either a numerical value, an std::vector of numerical values, or что -то, что уже является Qstring . Численное значение здесь - это непогнированное целое число, или конвертируемый переход .
Значения внутри std :: vector должны быть разграничены запятой. Это намеренно. Это отличается от делимитера символа.
Это то, что я пробовал:
header.hppобразной

Код: Выделить всё

#ifndef __HEADER_HPP__
#define __HEADER_HPP__

// Qt Libraries
#include 

class QClass
{
public:

template inline static QString        ConvertToString(Type, OtherType...);
template inline static QString        ConvertToString(const std::vector&, OtherType...);
template inline static QString                   ConvertToString(Type);
template inline static QString                   ConvertToString(const std::vector&);
};

template
QString QClass::ConvertToString(Type val, OtherType... args)
{
return QClass::ConvertToString(val) + Delimiter + QClass::ConvertToString(args...);
}

template
QString QClass::ConvertToString(const std::vector& vect, OtherType... args)
{
return QClass::ConvertToString(vect) + Delimiter + QClass::ConvertToString(args...);
}

template
QString QClass::ConvertToString(Type val)
{
return QString::number(static_cast(val));
}

template
QString QClass::ConvertToString(const std::vector& vect)
{
auto foo = QString();

for (const auto& val : vect)
foo += QString::number(val) + ',';

if (not foo.isEmpty())
foo.chop(1u);

return foo;
}

template QString QClass::ConvertToString(const char*);
template QString QClass::ConvertToString(QString);

template
QString QClass::ConvertToString(QString str)
{
return str;
}

template
QString QClass::ConvertToString(const char* foo)
{
return QString(foo);
}

#endif
< /code>
main.cpp
// Standard Libraries
#include 

// Custom Libraries
#include "Header.hpp"

template
QString QClass::ConvertToString(QString str)
{
return str;
}

template
QString QClass::ConvertToString(const char* foo)
{
return QString(foo);
}

int main(void)
{
const auto vect = std::vector{1u, 7u, 2u};
const auto foo = QClass::ConvertToString(3u, vect, "Ok!", 5u);

std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/79749595/variadic-template-function-that-i-cant-fix-on-my-own[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»