gpt4 book ai didi

c++ - 如何获取gtest TYPED_TEST参数类型

转载 作者:太空狗 更新时间:2023-10-29 20:35:00 25 4
gpt4 key购买 nike

我有一些在 Windows (Visual Studio 2017) 上编写的单元测试,我需要将它们移植到 Linux(GCC 4.9.2 - 我坚持使用这个版本...)。我为我的问题提供了一个简单的例子,它在 Windows 上编译得很好(我认为它不应该编译,因为 MyParamType 是来自 e 模板基类的依赖类型)并且不编译Linux.

例子:

#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;

通过更改为:

TYPED_TEST(MyTest, MyTestName)
{
typename MyTest<gtest_TypeParam_>::MyParamType param;
}

代码编译通过了,但是看起来很丑。

有没有简单/好的方法从 TYPED_TEST 获取模板参数类型?

最佳答案

答案隐藏在文档中:

#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)
{
// To refer to typedefs in the fixture, add the 'typename TestFixture::'
// prefix. The 'typename' is required to satisfy the compiler.

using MyParamType = typename TestFixture::MyParamType;
}

https://github.com/google/googletest/blob/master/googletest/docs/advanced.md

关于c++ - 如何获取gtest TYPED_TEST参数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45234042/

25 4 0
文章推荐: c# - 是否有用于获取图标的 Windows 7 颜色的 API?
文章推荐: python - Django 管理员,自定义错误消息?
文章推荐: c# - 如何解决泛型方法中类型推断的局限性
文章推荐: python - 如何在 Django 中使用
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com