- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我目前正在做一个项目,我使用:
我遇到了关于 const_cast
的问题.我到处搜索,没有找到可以帮助我的在线资源。当我调用 BOOST_FOREACH
时出现问题在测试方法中。我不断收到以下错误:
/usr/include/boost/foreach.hpp: In member function
'boost::foreach_detail_::rvalue_probe<T>::operator T&() const [with T =
boost::unordered_map<std::basic_string<char>, std::basic_string<char> >]':
... instantiated from here /usr/include/boost/foreach.hpp:476:90:
error: invalid cast from type
Dereferee::const_cast_helper<boost::foreach_detail_::rvalue_probe<boost::unordered_map<std
::basic_string<char>, std::basic_string<char> > >*>
to type 'boost::unordered_map<std::basic_string<char>, std::basic_string<char> >*
我开始剖析这个问题,发现 const_cast 运算符为了某些运行时检查而被重载,我不知道是什么。总而言之,有一个Dereferee::const_cast_helper
这是 cxxtest 依赖项的一部分,是 const_cast 运算符的重载。
此助手取消定义 const_cast 运算符 (!)
#ifdef const_cast
#undef const_cast
#endif
最后重新引入 const_cast 运算符:
#define const_cast ::Dereferee::const_cast_helper
这样每次调用 const_cast 时,都会调用此助手的相应构造函数。构造函数接受指针、引用、const 指针和 const 引用。
Boost 还使用强制转换来查看正在迭代的集合是左值还是右值,以避免复制它/重新计算表达式。
编译器提示如下:
template<typename T>
struct rvalue_probe
{
...
operator T &() const { return *reinterpret_cast<T *>(const_cast<rvalue_probe *>(this)); }
};
在我的例子中,T 是 boost::unordered_map 并且不知何故这个转换和助手的重载中断的组合......
我研究了可能的解决方案,但我不知道如何实际实现它们,我没有那么多 C++ 经验。我一点都不在乎我是否会在我的测试中进行这些编译时检查,我可以解决这个问题。因此,在这三个方向中的任何一个方向上的任何帮助都是最有帮助的!
禁用 boost 的右值检查,使用 BOOST_WORKAROUND 和 foreach.hpp 中定义的文字
BOOST_FOREACH_COMPILE_TIME_CONST_RVALUE_DETECTIONBOOST_FOREACH_NO_RVALUE_DETECTIONBOOST_FOREACH_NO_CONST_RVALUE_DETECTIONBOOST_FOREACH_RUN_TIME_CONST_RVALUE_DETECTION
禁用此 const_cast_helper
.当我运行我的测试程序(与当时的测试项目不同的项目)时,我的代码按预期编译和运行,const_cast 的重载造成了问题。
实现可修复此错误的扩展。我不知道是否应该在 const_cast_helper
中完成或 rvalue_probe
但这没有任何好处。
template <typename T> const_cast_helper(rvalue_probe<U>* value_to_cast) : cast_value(const_cast<U*>(value_to_cast)) { }
提前感谢您的输入!
最佳答案
经过更多挖掘,我设法找到了解决方法。我为我的构建配置定义了一个符号 DEREFEREE_NO_CONST_CAST
。这阻止了 const_cast_helper
被编译。希望不会出现错误,测试现在正在运行......
关于c++ - BOOST_FOREACH 和 cxxtest 插件的转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18145466/
我希望动态扩展我的 CxxTest Suite有额外的测试项目,但我发现所有测试场景必须在编译时可用(硬编码)。 我的场景是我有一个相当庞大的 C++ 类,其中有 20 多个方法要测试。此类需要针对
我编写了以下CMakeLists.txt 以使用CxxTest 构建测试器(这几乎是FindCxxTest 提供的标准示例): cmake_minimum_required(VERSION 2.8)
这是一个奇怪的问题,我不知道该怎么做。 我有如下内容: struct Parms { const std::string value1; const std::string value
我希望你能帮助我。我在我的主要开发机器上使用 CxxTest 编写了一个小项目。在这台机器上一切正常,没有问题。但是,我尝试在我全新的笔记本电脑上设置这个项目,但无法让它工作!我怀疑我的 MinGW
我正在使用 CxxTest 进行单元测试。我跟着文档。 我执行的第一个命令是: cxxtestgen --error-printer -o runner.cpp MyTestSuite1.h 命令的输
我目前正在做一个项目,我使用: boost 库 v1.39 Eclipse CDT (Juno) 和 Cygwin CxxTest 插件:http://wiki.web-cat.org/WCWiki/
我正在尝试为我的 open source project hosted on Github 添加 Travis-Ci 支持 CMake 尝试查找 CxxTest 时出现问题。 Travis-Ci 在旧
我刚刚下载了 cxxtest 的 4.4 版并将我的 zip 文件解压到这个路径:C:/cxxtest-4.4。紧接着,我没有执行任何其他步骤,而是打开了 CLion 并尝试将 CxxTest 添加到
我需要在我的对象中临时放置一个 main() 函数来测试替代功能(除了简单的单元测试),但我一直不得不注释掉我的 main() 运行我的单元测试的函数。 是否有 CxxTest 的 #define _
CxxTest documentation有一个生成和运行单元测试的 Makefile 示例。我如何为 automake (Makefile.am) 做同样的事情? 最佳答案 我通过在 tests 目
我正在尝试在 Eclipse 上使用 CxxTest 框架执行测试用例。按照本网站上的说明进行操作后 - http://web-cat.cs.vt.edu/eclipse/cxxtest/ 我能够构建
我有一组使用 gtest 作为框架的单元测试。 构建并执行,输出如下所示: 我希望输出类似于使用 cxxunit 时的输出(. 测试通过时,失败时详细错误)。如果可能的话,用颜色。 如何做到这一点?
我不确定是否理解我收到的 undefined reference 。 ./cxxtest/cxxtestgen.py -o tests.cpp --error-printer DrawTestSuit
是否可以使用 cxxunit或任何其他单元测试框架(不包括 QtTestLib )来测试 qt 小部件? 如果是,那么还有两个问题: 如何? 由于我正在使用 valgrind 运行单元测试,这会报告一
我与一个开发基于 MPI 的 C++ 数值应用程序的团队合作。该小组使用 cxxtest 来构建单独的单元测试或小型套件,但是 1) 跨目录聚合具有 cxxtest 的常用功能存在一些复杂性,并且 2
我是一名优秀的程序员,十分优秀!