2

引数としてストリームを受け取る Reference コンストラクターがあります。

Reference::Reference(std::istream& p_is)
{}

ストリームが null でない場合は、Google Test で単体テストをチェックインする必要があります。Googleで何ができるかを確認しましたが、何も見つかりませんでした。

私の質問は次のとおりです。それを行う方法を知っていますか、それとも私へのヒントはありますか。

よろしくお願いします、

4

3 に答える 3

0

NULL 参照をテストする必要があると考える理由を再考する必要があるかもしれません。参照よりもポインターを台無しにする可能性がはるかに高くなります。

たとえば、これはクラッシュを引き起こしています

int *p;
if(true)
{
  int x;
  p = &x;
}

*p = 3;//runtime error

参照には同じスコープ内の値を持つ値を割り当てる必要があるため、参照では発生しません。

ただし、クラッシュが発生する可能性があり、チェックが役立つ場合があります。

 int* p = 0;
 int& ref(*p);
 int i(ref);  // access violation here

しかし、次のように、代わりにポインターをチェックしたい場合があります。

int* p =0;
if (p)
{
  int& ref(*p);
  int i(ref);
}

したがって、前述のように、参照の初期化についてはコードで責任を負います。のように、初期化がポインターのポインティーで行われる場合は、ポインターをint& ref(*p);確認してください。

HTH

于 2013-04-27T19:54:20.217 に答える