2014-04-23 9 views
0

최근이 선언문은 나를 혼란스럽게합니다. 두 개의 다른 파일이 있습니다. 하나는 score.cpp이고 다른 하나는 curve1.cpp입니다. 두 번째 클래스 Curve1은 첫 번째 클래스 Score에서 상속됩니다. score.cpp에서동적 포인터 배열 선언

는, 내가 선언 :

ipScore = new int[getSize()];.

이것은 문제없이 컴파일되고 정상적으로 작동합니다.

new_ipScore = new int[getSize()];

'new_ipScore' : undeclared identifier

'=' : cannot convert from 'int *' to 'int'

가 무슨 문제 말하는 :하지만 때 curve1.cpp에, 나는 또 다른 변수를 선언? 누구든지 도울 수 있니?

+0

'new_ipScore'을 (를) 선언하셨습니까? –

+1

'new_ipScore = new int [getSize()];'선언이 아니십니까? 그렇지 않다면, 왜'ipScore = new int [getSize()];가 에러없이 작동하고 있는가? 감사합니다 –

+0

'ipScore'가 아마도 선언되었습니다. 아니요, new_ipScore = new int [getSize()];는 선언이 아니며 이미 선언 된 변수에 대한 할당입니다. 'int * new_ipScore = ...'는 선언 + 초기화가됩니다. 스투 오우 삐드 –

답변

1

new_ipScore은 (는) 선언되지 않았습니다. 신고 해주세요. 나는 당신이 객체 지향 패러다임을 따라 왔다는 것을 알아 챘다. 그래서 ipScoreprivate 클래스에 선언 되었습니까? 야생 추측은 Score 클래스입니다. 따라서 게시하기 전에 확인하십시오.

2

컴파일러에서 이미 문제가 무엇인지 말씀해 주시겠습니까?!

'new_ipScore': 선언되지 않은 식별자

은 어디에서이 식별자를 선언? 식별자의 유형이 무엇인지는 알 수 없습니다. 아마 너 스스로 이것을 말할 수 있을까?

+1

그렇습니다. Vlad,'ipScore'는'class_score'의 private 클래스에서 이미 선언되었지만 new_ipScore는 그렇지 않습니다. 어리석은 나를 .. –

+0

@ 실버 팔콘 우리는 단지 컴파일러가 이미 몇 가지 단어를 추가하는 것을 반복 할 수 있습니다. –

2
new_ipScore = new int[getSize()]; 

동적으로 힙에 정수의 배열을 할당 'new_ipScore' : undeclared identifier 있고

new int[...]
'=' : cannot convert from 'int *' to 'int' 

말하는. 반환 값은이 배열의 첫 번째 항목에 대한 포인터입니다 (예 : int*).

아마도 코드에서 new_ipScore 변수를 정의하지 않았으므로 컴파일러는 이에 대해 전혀 알지 못합니다. 실제로 컴파일러는 'new_ipScore' : undeclared identifier이라는 불평을합니다.

new_ipScoreint*으로 정의하십시오.

참고 또한이 현대 C++에서 배열을 관리하는 일반적인 방법은 경우 std::vector<int>에, std::vector을 사용하는 것입니다.

+1

고마워요. 'ipScore'가 클래스'Score'의 private에서 이미 선언 된 나의 어리 석음. 어쨌든 고마워. –

+0

@SilverFalcon : 문제 없습니다. 우리 모두는 코드에서 잘못된 것을 수행했습니다. 버그라고 부릅니다. :) –