Ich habe einige Komponententests auf Windows (Visual Studio 2017) geschrieben und ich muss sie auf Linux portieren (GCC 4.9.2 - Ich bin mit dieser Version fest ...). Ich bin mit einem einfachen Beispiel für mein Problem gekommen, das sich unter Windows gut kompiliert (ich glaube nicht, dass es kompiliert werden sollte, da MyParamType
ein abhängiger Typ von der Basisklasse der Vorlage ist) und kompiliert nicht unter Linux.Wie bekomme ich gtest TYPED_TEST Parameter Typ
Beispiel:
#include <gtest/gtest.h>
template<typename T>
struct MyTest : public testing::Test
{
using MyParamType = T;
};
using MyTypes = testing::Types<int, float>;
TYPED_TEST_CASE(MyTest, MyTypes);
TYPED_TEST(MyTest, MyTestName)
{
MyParamType param;
}
In member function ‘virtual void MyTest_MyTestName_Test::TestBody()’:error: ‘MyParamType’ was not declared in this scope MyParamType param;
Mit dem Wechsel zu:
TYPED_TEST(MyTest, MyTestName)
{
typename MyTest<gtest_TypeParam_>::MyParamType param;
}
Der Code kompiliert, aber es sieht sehr hässlich.
Gibt es eine einfache/nette Möglichkeit, den Template-Parametertyp von einer TYPED_TEST
zu erhalten?
ich für diese – Felics