2012-12-21 2 views
1

다음 코드는 방법에서 포인터의 동적 배열을 반환하는 방법

VehicleManager.h

#pragma once 
#include "Vehicle.h" 

class VehicleManager 
{ 
public: 
    VehicleManager(int size); 
    ~VehicleManager(void); 

    bool add(Vehicle *v); 
    void display(); 
    int getCount(); 
    Vehicle **getList(); 

private: 
    int count; 
    int maxVehicles; 
    Vehicle** vehicles; 
}; 

VehicleManager.cpp

//Other Code 

Vehicle VehicleManager::**getList() 
{ 
    return vehicles; 
} 

//Other Code 

에서에서 봐주십시오 여기, 배열을 반환 할 수 없습니다. 함수에서 동적 포인터 배열을 반환하려면 어떻게해야합니까? 도와주세요!

Vehicle** VehicleManager::getList() 
{ 
    return vehicles; 
} 

을하지만 당신이 정말로해야하는 것은 VehicleManagerVehicles, 또는 std::vector<std::unique_ptr<Vehicle> 발신자는 경우를 할당 dynamicallly의 수명 담당하는 경우 std::vector<Vehicle*>을 사용할 수 있습니다 :

+1

'::'는 범위 분석 연산자입니다. '**'는 범위를 분석 할 필요가 없습니다. 비록 포인터의 동적 배열이 필요하다고 확신한다면 스마트 포인터의 벡터를 살펴 보는 것이 좋습니다. – chris

+0

나는 또한 Vector 제안에 동의하며, 이것은 어리석은 방법이라는 것을 알고있다. (하지만,해야 할 일은 다음과 같은 단계를 따라 서면으로 주어진다 :( –

+0

왜 차량을 가져와야 하는가? 관리자가 그들과 함께 할 일을하고 싶습니다. 나는'display'가하는 일이라고 생각합니다 .' updateTime' 등과 같이 다른 일을 할 수있는 다른 함수를 추가하십시오. –

답변

4

반환 형식에 ** 적용 소유권을 얻는 것입니다. 두 경우 모두 값으로 반환 할 수 있습니다.

+0

감사합니다. 나는 또한 Vector 제안에 동의합니다. , 그리고 나는 이것이 어리석은 방법이라는 것을 알고있다. (그러나. 무엇을 해야할지, 그것은 실제 코드에서 그'**'물건을 사용하지 않는 한, 단계를 따르기 위해 서면으로 주어진다 : ( –

+0

@Sepala. C 언어 기술을 배우는 데 너무 많은 시간을 소비한다고 생각합니다. 어떤 사람들은 읽지 못하게 할 시간이 없기 때문에 코드를 유지하고 사용하기가 어렵습니다. – juanchopanza