gpt4 book ai didi

c++ - googletest 中没有合适的默认构造函数 EXPECT_NO_THROW

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:56:00 24 4
gpt4 key购买 nike

声明:

class ClassOne
{
ClassOne (ClassTwo* classTwo, ClassThree const& classThree);
}

测试:

ClassTwo* classTwo;
ClassThree classThree;
EXPECT_NO_THROW (ClassOne (classTwo, classThree));

这会编译并运行,但现在我将其更改为:

声明:

class ClassOne
{
ClassOne (ClassThree const& classThree);
}

测试:

ClassThree classThree;
EXPECT_NO_THROW (ClassOne (classThree));

失败并显示“没有合适的默认构造函数可用”。

编译以下行:

ClassOne classOne (classTwo, classThree);    // First case
ClassOne classOne (classThree); // Second case

是否有某些原因导致我无法在具有一个参数的构造函数上EXPECT_NO_THROW

最佳答案

我认为这是 gtest 中的一个错误(尽管我不是宏方面的专家)。 EXPECT_NO_THROW 最终扩展为:

#define GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) \
if (::testing::internal::AlwaysTrue()) { statement; }

如果 statement 包含在 if 主体中的括号中,您的代码将使用 VS2012RC 进行编译:

#define GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) \
if (::testing::internal::AlwaysTrue()) { (statement); }
// ^ ^

作为解决方法,您可以:

EXPECT_NO_THROW ((ClassOne (classThree)));

关于c++ - googletest 中没有合适的默认构造函数 EXPECT_NO_THROW,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10912719/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com