2017-05-05 11 views
2

googlemock(とStackOverflow)が新しくなりました。 googlemockでMOCK_METHODnを使用しているときに問題が発生しました。この機能は広く使用されていると思います。ここに私がしたことがあります。 オーバーロードされた演算子にgmock MOCK_METHODを使用するには?

私は仮想過負荷に operator[]と抽象クラス Fooを持っている:

class Foo{ 
public: 
     virtual ~Foo(){}; 
     virtual int operator [] (int index) = 0; 
} 

と私が取得するgooglemockを使用したいMockFoo

class MockFoo: public Foo{ 
public: 
     MOCK_METHOD1(operator[], int(int index)); //The compiler indicates this line is incorrect 
} 

しかし、このコードは私のようなコンパイルエラーを与えますこれは:

error: pasting "]" and "_" does not give a valid preprocessing token 
    MOCK_METHOD1(operator[], GeneInterface&(int index)); 

My understan dingはコンパイラがoperator[]を誤解しており、メソッド名として使用していません。しかしMOCK_METHODnを使ってoperator[]を偽る正しい方法は何ですか?私はgooglemockからdocsを読んだが、私の質問に関連するものは何も見つかりませんでした。誰かがそれを手伝ってくれる?

ありがとうございます!

答えて

2

できません。参照:https://groups.google.com/forum/#!topic/googlemock/O-5cTVVtswE

ソリューションは、ちょうどそうのような定期的な昔ながらのオーバーロードされたメソッドを作成することです:

class Foo { 
public: 
virtual ~Foo() {} 
virtual int operator [] (int index) = 0; 
}; 

class MockFoo: public Foo { 
public: 
MOCK_METHOD1(BracketOp, int(int index)); 
virtual int operator [] (int index) override { return BracketOp(index); } 
}; 
関連する問題