【发布时间】:2012-05-31 08:49:22
【问题描述】:
我正在尝试为一些使用 boost::variant 的接口类创建 Google Mock 对象
#include <gtest/gtest.h>
#include <gmock/gmock.h>
#include <boost/variant.hpp>
#include <vector>
typedef std::vector<int> VectorOfInt;
typedef boost::variant<VectorOfInt> VariantOfVector;
class InterfaceClass
{
public:
virtual ~InterfaceClass() {}
virtual void SetSome( const VariantOfVector& ) = 0;
virtual const VariantOfVector& GetSome() const = 0;
};
class MockInterfaceClass
{
public:
MOCK_METHOD1( SetSome, void( const VariantOfVector& ) );
MOCK_CONST_METHOD0( GetSome, const VariantOfVector&() );
};
当我用它编译时
g++ mytest.cpp -o mytest
我明白了
/usr/include/boost/variant/detail/variant_io.hpp:64: error: no match for 'operator >*)this )->boost::detail::variant::printer >>::out_
boost::variant 是否适用于 std::vector? boost::variant 似乎适用于我定义的任何类型,但 std:vector 除外。为什么?
增强版 - 1.45 g++ 版本 - 4.4.5
【问题讨论】:
-
顺便说一下,整个编译清单是here
标签: boost googlemock