我嘲笑一個C++類,它具有使用Google Mock和VS2010 2個重載函數:谷歌模擬:嘲笑重載函數創建警告C4373
#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應該被使用。 – 2011-01-09 11:41:38
@Billy ONeal - 方法本身不是const的,只有它的參數是。我還應該使用MOCK_CONST_METHOD嗎? – Jonathan 2011-01-09 12:28:39