인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

1510 원준혁님의 프로필 이미지

작성한 질문수

C++ 프로그래밍 과제 수행 중 Indirection requires pointer operand ('double' invalid) 오류 발생

작성

·

524

1

스크린샷 2023-05-27 오후 7.56.46.png제가 작성한 코드인데 왜 이런 오류가 뜨는지 모르겠습니다..

함수 전문 첨부합니다. 아래의 두 변수 total_emission_car, total_cost_car은 전역변수로 선언했고, carbon_emision_truck과 fuel_efficiency_truck은 #define을 활용해 정의했습니다.

답변 1

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴이에요.

코드를 보면 오류 발생 이유가 명확히 나와있습니다.
carbon_emision_truckfuel_efficiency_truck는 둘 다 매크로로 정의된 상수입니다. 하지만 calculate_carbon_footprint() 함수 내부에서 이 변수들이 상수임을 인식하지 못하고, 인자로 double 자료형을 받은 후 * 연산자를 사용하고 있기 때문에 발생하는 오류인 것 같습니다.

해결책으로는 calculate_carbon_footprint() 함수의 인자를 double 자료형 대신 const double&로 수정해주시면 됩니다. 이렇게 하면 인자로 상수값을 받아올 수 있고 * 연산자도 사용할 수 있습니다.

함수 전문:

double calculate_carbon_footprint(double miles_driven_car, const double& fuel_efficiency_car)
{
    double carbon_emission_car;
    carbon_emission_car = (miles_driven_car / fuel_efficiency_car) * carbon_emision_truck * 19.64;
    return carbon_emission_car;
}