Tôi đang chế giễu một lớp C++ trong đó có 2 chức năng quá tải sử dụng Google Mock và VS2010:Google Mock: chức năng quá tải chế giễu tạo các cảnh báo 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));
// ...
};
Mỗi lần tôi biên soạn tôi nhận được sau cảnh báo hai lần:
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'
Bất kỳ ý tưởng nào về lý do?
Hành vi này có đúng không?
Làm cách nào để tránh điều này?
Hãy chắc chắn rằng bạn đang sử dụng biến thể đúng - MOCK_CONST_METHOD nên được sử dụng khi 'phương pháp A' của bạn đang trọng là 'const'. –
@Billy ONeal - Bản thân phương thức không phải là const, chỉ các tham số của nó là. Tôi vẫn nên sử dụng MOCK_CONST_METHOD? – Jonathan
Không; trong trường hợp đó bạn nên làm những gì bạn đang làm :) –