내가 간다 :C++ 객체 인스턴스화 및 (최근에) 범위
Phone myPhone = new Phone();
단순히
Phone myPhone;
를 작성 본질적위한 홀더를 생성 클래스이지만 아직 초기화되지 않았습니다.
저는 C++로 작은 클래스를 작성하고 있습니다. 문제가 있습니다.
이 위의 코드와 같은 약간의 오해의 소지가 사실Phone myPhone;
void Initialise()
{
myPhone = new Phone();
}
void DoStuff()
{
myPhone.RingaDingDong();
{
내가 하나에 많은 것들을 내 모든 초기화 코드를 삽입 할 수 있도록 원하기 때문에 내가하고 싶은 무엇인가 : 다음 의사 코드는 깔끔한 장소. 내 문제는 C++에서는 initialize 내부의 라인이 불필요하다는 것이다. 왜냐하면 그 전에는 새로운 인스턴스가 이미 만들어졌고 첫 줄에서 초기화되기 때문이다. 반면에 Initialise() 내부에 첫 번째 행을 넣으면 더 이상 DoStuff에서 액세스 할 수 없습니다. 범위를 벗어났습니다 (C++에서 'new'사용과 사용하지 않음의 차이는 말할 필요도 없음). 클래스 변수에 대한 홀더를 어떻게 만듦으로써 한 곳에서 초기화하고 다른 곳에서 액세스 할 수 있습니까? 아니면 근본적으로 잘못된 것이 있습니까?
미리 감사드립니다.
답변을 작성하려고했지만 질문에 너무 많은 내용이 포함되어 있습니다. 대신 표준 SO C++ 응답 # 1 : [좋은 소개 서를 읽으십시오] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list). –
여기 CPP와 동의합니다. 언어의 한 가지 정비사를 아는 것이 한 가지 일이지만, 언어의 관용구를 이해하는 데에는 길게 걸립니다. 불행히도 당신의 예제는 너무 짧고 의미있는 조언을하기 위해 고립되어 있으므로 "새로운'또는 포인터"를 사용하지 말아야합니다. –