Как я могу извлечь и использовать типы, определенные в аргументах шаблона переменных класса C++, чтобы вместо определения нескольких дубликатов следующего класса, которые откладываются только на количество и типы параметров:
template
class SUTTestFixture1
{
public:
void SetUp(T1 expected, vector data)
{
_expected = expected;
_data = data;
}
protected:
SUT _sutObj;
vector _data;
T1 _expected;
};
template
class SUTTestFixture2
{
public:
void SetUp(T1 expected, T2 param, vector data)
{
_expected = expected;
_param = param;
_data = data;
}
protected:
SUT _sutObj;
vector _data;
T1 _expected;
T2 _param;
};
Я ожидаю, что смогу использовать только один класс с переменными аргументами шаблона:
template
class SUTTestFixture
{
public:
void SetUp(T... args)
{
_expected = args...[0];
_data = args...[1]; // expected ‘;’ before ‘...’ token
}
protected:
SUT _sutObj;
vector _data; // XXX
T... _expected; // error: expected unqualified-id before ‘...’ token
};
SUTTestFixture1 пример использования:
class TestFixture1 : public SUTTestFixture1, public testing::TestWithParam
{
public:
void SetUp() override
{
RangeTestFixture1::SetUp(get(GetParam()), get(GetParam()));
}
long Function1Test()
{
return _sutObj.Function1(_data);
}
};
SUTTestFixture2 пример использования:
class TestFixture2 : public SUTTestFixture2, public testing::TestWithParam
{
public:
void SetUp() override
{
RangeTestFixture2::SetUp(get(GetParam()), get(GetParam()), get(GetParam()));
}
size_t Function2Test()
{
return _sutObj.Function2(_param, _data);
}
};
Подробнее здесь: https://stackoverflow.com/questions/784 ... heir-types