2014-01-27 4 views
-7

특정 클래스의 개체에 대한 포인터의 가변 크기 (증가시킬 수 있음) 배열을 갖고 싶습니다.포인터의 가변 크기 배열 C++

Wire **w; 
... 
w[i]= cw; 

가 어떻게 포인터에 대한 메모리를 할당 할 수 있습니다 (와이어 CW는 와이어에 대한 포인터입니다, 나는 카운터, 클래스 이름입니다)? (cw가 기존 와이어를 가리키고 있다고 가정하십시오.)

고마워요.

+4

질문은 무엇입니까 따르는 벡터를 사용하지 않을 경우? – taocp

+1

왜'std :: vector'를 사용하지 않을까요? – Barmar

+0

'w []'에 실제로 메모리를 할당합니까? –

답변

3

고려 :

std::vector <std::unique_ptr <Wire>>

+0

std :: unique_ptr에 액세스하려면 어떻게해야합니까? 나는 을 포함했지만 여전히 문제가 있습니다. 나는 Qt Creator 2.8.1 (Qt 5.1.1)을 가지고 일하고있다. – user3237431

+0

@ user3237431 : 나는 그 컴파일러에 익숙하지 않다. 'unique_ptr'은 C++ 11에서 소개되었습니다. 귀하의 컴파일러가 그것을 지원합니까? 그렇지 않다면, 당신은'unique_ptr' 대신 raw 포인터를 사용해야 할 것입니다. –

0

가장 좋은 방법은 표준 컨테이너 표준 : : 벡터를 사용하는 것입니다. 예를 들어

std::vector<Wire *> v; 

또는 일부 스마트 포인터입니다.

그런 다음 접근 방식은

int size = SOME_VALUE; 

Wire **w = new Wire * [size]; 

w[0] = cw; 
+0

별로! 첫 번째 샘플에는 원시 포인터를 사용하지 말고 두 번째 샘플에는 원시 포인터를 사용하지 마십시오. –