원인

반환 타입에 대한 적절한 반환 코드를 자동으로 생성하지 못하는 경우 컴파일 오류가 발생할 수 있습니다.

해결 방법

소스 코드를 참고하여 적절한 반환 코드를 빌드 스텁에 추가하여 해결할 수 있습니다. 반환 타입의 계층 구조가 복잡한 경우, 타입의 계층을 역으로 따라가며 적절하게 객체를 생성해야합니다. CT 2024.12의 [스텁 문제 해결 가이드] 대화 상자에서 초기화 코드를 작성할 때 참고할 수 있는 코드의 위치를 표시해줍니다. 이 위치를 참고하면 문제 해결에 도움이 될 수 있습니다.

예시

소스 코드와 스텁 코드의 예시입니다.

// 소스 코드
 class OutClass{
 public:
      OutClass() = delete;
      OutClass(int a){}
	  void print(){
	  }
 };

 OutClass& stubError();

 void test(OutClass m){
	 OutClass& b = stubError();
	 b.print();
 }
// 스텁 코드
class OutClass & stubError()
{
/// Stub body start

/// Stub body end
}

[오류 뷰]를 확인하면 스텁 함수에서 OutClass의 객체를 반환해야 한다는 것을 알 수 있습니다.

적절한 객체를 반환하는 방법은 여러가지가 있습니다.

  • 전역 변수의 객체를 반환하기
  • 스텁 내부에서 static으로 변수를 선언하여 반환하기
  • 싱글턴 객체를 반환하기

이 외에도 다양한 방법으로 객체를 반환할 수 있습니다. 실제 소스 코드를 보고 적절한 방법을 사용하여 반환하여야 합니다. 이 예제에서는 static 변수를 선언하여 반환하는 방식을 사용하였습니다.

static OutClass obj(1);  // 매개 변수의 값은 테스트 설계에 맞게 적절히 입력하세요.
return obj;

이를 적용하여 새로 작성된 스텁 코드입니다.

// 수정된 스텁 코드
class OutClass & stubError()
{
/// Stub body start
	static OutClass obj(1);
	return obj;
/// Stub body end
}

테스트를 다시 실행하거나 테스트 컴파일을 사용하면 스텁의 오류가 해결된 것을 알 수 있습니다.

Need more help with this?
Don’t hesitate to contact us here.

Thanks for your feedback.