【发布时间】:2011-01-09 11:33:28
【问题描述】:
我正在使用 Google Mock 和 VS2010 模拟一个具有 2 个重载函数的 C++ 类:
#include "stdafx.h"
#include "gmock/gmock.h"
#include "A.h"
class MockA : public A
{
public:
// ...
MOCK_METHOD3(myFunc, void(const int id, const int errorCode, const CString errorMsg));
MOCK_METHOD1(myFunc, void(const CString errorMsg));
// ...
};
每次编译时都会收到以下警告两次:
1>c:\dev\my_project\tests\mocka.h(83): warning C4373: 'MockA::myFunc': virtual function overrides 'A::myFunc', previous versions of the compiler did not override when parameters only differed by const/volatile qualifiers
1> c:\dev\my_project\my_project\include\a.h(107) : see declaration of 'A::myFunc'
知道为什么吗?
这是正确的行为吗?
我怎样才能避免这种情况?
【问题讨论】:
-
确保您使用的是正确的变体——当您覆盖
A的方法是const时,应使用 MOCK_CONST_METHOD。 -
@Billy ONeal - 方法本身不是 const,只有它的参数是。我还应该使用 MOCK_CONST_METHOD 吗?
-
否;在这种情况下,你应该做你正在做的事情:)
标签: c++ visual-c++ mocking overloading googlemock