private 멤버 배열을 사용하여 클래스 (foo)를 만들려고합니다. 이 클래스는, 배열이 초기화되는 constructor 내의 다른 클래스 (foo2)의 private 멤버로서 사용됩니다.C++ 초기화 멤버 배열
example.h :
class foo{
private:
int* ary;
public:
foo(int*);
~foo();
}
example.cpp :
foo::foo(int* b){
ary = b;
}
useOfExample.h
class foo2{
private:
foo my_foo;
public:
foo2();
~foo2();
}
useOfExample.cpp
foo2::foo2() : myfoo({2,3}){}
,617,
나는 C++에서 멍청한 놈이다. 나는 정말로 명확하지 않을 수도 있다는 것을 깨닫는다. 그래서 다른 말로하면 foo2는 foo2가 배열이 [2,3]으로 설정 될 필요가있다.
그건 배열이 아니에요, 그것은 정수로의 포인터입니다 (나는 거의 같은 것으로 취급 할 수 있습니다). 왜 당신은 STL 클래스를 사용할 수있을 때 C++의 포인터에 대해이 끔찍한 일을합니까? 확인하지 않고'{2,3}'의 범위를 알고 있습니까? 'myfoo'가 여전히 그것을 가리키고있는 동안 범위를 벗어날 수 있습니까? – John3136
배열은 포인터가 아니며 포인터는 배열이 아니며 C++의 표준 동적 배열은'std :: vector'입니다. 그걸 사용해야합니다. 당신이 할 수 없다면, 당신은 실제로 당신이 여기서해야 할 일을 파악하기 위해 당신의 코스 자료 (또는 당신이 배우는 무엇이든지)를 검토 할 필요가 있습니다. –
'int * ary;'=>'int ary [2];'또는'std :: array ary;'. 그런 다음 초기화되지 않은 포인터가 아닌 배열이됩니다. –