C++升压测试无法测试操作员<
C++ boost test can't test operator <
我在使用 Boost C++ 单元测试框架时遇到问题。 这是文件 someclass.h
class someclass {
public:
someclass(int a_x, int b_x);
someclass();
friend bool operator<(someclass& lhs, someclass& rhs);
friend ostream& operator<<(ostream& stream, const someclass& sa);
private:
int a;
int b;
};
这是某个类的文件.cpp
#include <iostream>
#include <ostream>
#include <vector>
#include <tuple>
using std::cout;
using std::endl;
using std::vector;
using std::ostream;
#include "someclass.h"
someclass::someclass(int a_x, int b_x)
:a(a_x), b(b_x)
{
}
//-------------------------------------------------------
someclass::someclass()
{
}
//-------------------------------------------------------
bool operator<(someclass& lhs, someclass& rhs)
{
return std::tie(lhs.a, lhs.b) < std::tie(rhs.a, rhs.b);
}
//-------------------------------------------------------
ostream& operator<<(ostream& stream, const someclass& rhs)
{
stream << "(" << rhs.a << "," << rhs.b << ")";
return stream;
}
这是测试它的程序:
#define BOOST_TEST_MODULE test_someclass
#define BOOST_TEST_DYN_LINK
#include <boost/test/unit_test.hpp>
#include <ostream>
using std::ostream;
#include "someclass.h"
BOOST_AUTO_TEST_CASE( someclass_lt )
{
someclass sa1(1,4);
someclass sa2(1,5);
someclass sa3(2,3);
someclass sa4(2,4);
someclass sa5(2,5);
BOOST_TEST( sa1 < sa2 );
BOOST_TEST( !(sa2 < sa1) );
BOOST_TEST( sa1 < sa3 );
BOOST_TEST( sa1 < sa4 );
BOOST_TEST( sa1 < sa5 );
}
该文件 someclass.cpp 本身编译得很好,但是当我尝试编译整个事情在一起,我得到了一大组错误消息,其中部分内容是,
In file included from testsomeclass.cpp:9:0:
someclass.h:6:19: note: bool operator<(someclass&, someclass&)
friend bool operator<(someclass& lhs, someclass& rhs);
^
someclass.h:6:19: note: no known conversion for argument 1 from ‘someclass’ to ‘someclass&’
我已经尝试了我能想到的一切方法来纠正这一点,但无济于事。我也在 stackoverflow.com 和许多其他网站上搜索过,但无济于事。有人可以告诉我出了什么问题以及如何解决它吗? 谢谢。
布鲁斯
你应该使用正确的恒常性:
friend bool operator<(const someclass& lhs, const someclass& rhs);
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 尽管测试成功,CppUnit测试核心仍被丢弃.为什么
- 呼叫运营商<<临时
- 数据成员SFINAE的C++17测试:gcc vs clang
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 为什么二进制搜索在我的测试中不起作用
- 从父数组测试用例构造二叉树失败
- 试图对缓存进行跨步测试,但程序并没有结束
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- OpenGL在启用深度测试时不会丢弃我的碎片
- 为测试目标创建具有不同源文件夹的文件
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- VC++本机单元测试,找不到调试符号
- <<操作员在下面的行中工作
- 换位表导致测试失败(但在游戏中运行良好)
- 用于交叉编译和CMake的预处理器宏的单元测试
- 谷歌测试中的期望值存储在哪里