2011-06-27 29 views
14

Tôi gặp một lớp học với operator[], như thế này:Làm thế nào để tạo một lớp mô hình với toán tử []?

class Base 
{ 
    public: 
    virtual ~Base(){} 
    virtual const int & operator[](const unsigned int index) const = 0; 
}; 

Làm thế nào tôi có thể tạo ra một lớp giả sử dụng google khuôn khổ mô hình cho phương pháp này?

Tôi cố gắng này:

class MockBase : public Base 
{ 
public: 
    MOCK_CONST_METHOD1(operator[], 
         const int& (const unsigned int) 
        ); 
}; 

nhưng điều đó tạo ra lỗi tiếp theo:

error: pasting "]" and "_" does not give a valid preprocessing token 
error: pasting "]" and "_" does not give a valid preprocessing token 
error: pasting "]" and "_" does not give a valid preprocessing token 
error: pasting "]" and "_" does not give a valid preprocessing token 

Trả lời

18

Các MOCK_METHOD# macro sẽ không hoạt động trên các nhà khai thác. Giải pháp được đưa ra trong this message nói để tạo phương pháp thường xuyên để chế nhạo:

class Base { 
public: 
virtual ~Base() {} 
virtual bool operator==(const Base &) = 0; 
}; 

class MockBase: public Base { 
public: 
MOCK_METHOD1(Equals, bool(const Base &)); 
virtual bool operator==(const Base & rhs) { return Equals(rhs); } 
}; 
+0

Cảm ơn. Điều đó làm việc tốt –

+0

Làm thế nào mà sẽ làm việc cho các nhà điều hành chuyển nhượng? – Mawg

Các vấn đề liên quan