2012-10-28 2 views
-4

나는 조금 초보자이기 때문에 여기서 도움이 될만한 도움이 될 것입니다. 장치 화면 크기를 가져 오는 Device라는 클래스가 있습니다.클래스를 호출하고 데이터를 반환 하시겠습니까?

int Device::GetDisplay() 
{ 
DisplayInfo display; 
int displayArray [2]; 
displayArray[0] = display.pixelSize().width(); 
displayHeight[1] = display.pixelSize().height(); 

return displayArray; 
} 

배열을 반환합니다. 데이터를 반환하는 더 좋은 방법이 있습니까?

Device *device = new Device(); 
device.GetDisplay(); 

내가 장치 *device = new Device();

감사를 사용하지 않고 그것을 호출 할 수 있습니다

또한 클래스를 호출 할 수있는 더 좋은 방법이있다, 그것은 현재를 통해이라고!

+0

나는 그것을 정적으로 만들고 데이터 구조를 반환합니다. – chris

+2

-1 : 어떻게 컴파일합니까? 코드가 원격으로 유효하더라도 C++에서는 "배열 반환"할 수 없습니다. –

+1

@LightnessRacesinOrbit'std :: array <2, int> foo();'충분히 가깝습니다. – chris

답변

3

Could I call it without using Device *device = new Device();

사용할 수 있습니다 정말로 필요한 경우 동적 할당 만 사용하십시오. 그것은 당신의 모범에서 당신이 그것을 필요로한다는 것이 명백하지 않습니다.

나머지 질문에 대해서는 개미 감각을 만들기에는 너무 많은 오류가 있습니다. 하지만 원하는 두 가지 정보를 가지고 간단한 클래스를 반환 할 수 있습니다 :

struct DisplayDimensions 
{ 
    int height; 
    int width; 
}; 

DisplayDimensions Device::GetDisplay() 
{ 
DisplayInfo display; 
DisplayDimensions d; 
d.width = display.pixelSize().width(); 
d.height = display.pixelSize().height(); 

return d; 
} 
+0

감사합니다. 다른 클래스에서 GetDisplay에 액세스 할 수 있도록 헤더 파일에 무엇을 넣어야합니까? 어떤 유형으로 반환해야합니까? – panthro

+0

@ user1013512'GetDisplay'는'DisplayDimensions'을 반환합니다. 그래서 당신은 그것들을 자신의 헤더에 넣거나'Device' 선언/정의가있는 곳에 선언/정의를 두어야합니다. – juanchopanza

+1

@ user1013512 그는 바로 그 답에 반환 유형을 표시합니다. 이러한 기본 사항 중 일부를 배우기 위해 일부 C++ 자습서 또는 기타 작업을하고 싶을 수도 있습니다. –

0

반환 값 (int)이 (int[2]) 함수에서 반환 된 값과 일치하지 않으면 std::array 또는 std::pair 또는 이와 비슷한 값을 사용해야합니다.

함수는 this을 사용하지 않으므로 static으로 만들 수 있으므로 Device::GetDisplay()을 사용하는 클래스 인스턴스없이 호출 할 수 있습니다.

는 먼저 static로 기능을 표시해야합니다 :

Device device; 

당신은해야합니다

static std::pair<int, int> GetDisplay() { 
    DisplayInfo display; 
    return std::make_pair(display.pixelSize().width(), display.pixelSize().height()); 
} 

그럼 당신은 예, automatic storage에 인스턴스화 할 수 Display::GetDisplay()

+0

고마워요, 어떻게 그것을 정적으로 만들 수 있습니까? – panthro

+0

정적으로 만드시겠습니까? 방법? –

+0

예, 인스턴스없이 사용할 수 있습니다. – panthro

관련 문제