원인
반환 타입에 대한 적절한 반환 코드를 자동으로 생성하지 못하는 경우 컴파일 오류가 발생할 수 있습니다.
해결 방법
소스 코드를 참고하여 적절한 반환 코드를 빌드 스텁에 추가하여 해결할 수 있습니다. 반환 타입의 계층 구조가 복잡한 경우, 타입의 계층을 역으로 따라가며 적절하게 객체를 생성해야합니다. 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.