2011-02-17 4 views
0

다음 코드를 참조하십시오 : test.cpp : 53 : 오류 : 'typeof'유형이 'typenamepair []'인 'sizeof'응용 프로그램이 잘못되었습니다. test.cpp : 'int main()'함수에서 : test.cpp : 87 : 오류 : '유형을 변환 할 수 없습니다. 'to'const char * '초기화시솔루션

크기의 문제점과 해결 방법은 무엇입니까? 또한 반환 된 instace를 사용하여 연산자를 사용하여 typename을 가져올 수 있습니까?

또한 더 나은 해결책이 있는지 알려 주시기 바랍니다. 감사합니다.

+0

1. 싱글 톤은 사용자의 문제와 관련이 없습니다. 예제를 단순화하면 도움이 될 것입니다. 2. 배열의 인덱스로'dataType'을 사용할 수 있습니다. 따라서 반복 할 필요가 없습니다. –

+0

불행하게도 데이터 유형을 인덱스로 사용할 수 없습니다. API 사양. 다음 번에 관련성없는 코드를 제거해야합니다. 감사. 싱글 톤이 아니면 대안은 무엇입니까? – Kiran

답변

0

첫 번째 오류의 경우 배열 내용이 정의 될 때까지 sizeof을 사용하여 코드를 이동해야합니다. a better way to get the array size이 있지만 내용이 정의 될 때까지 사용할 수 없습니다.

두 번째 오류는 포인터가있어서 사용자 정의 operator[]을 찾을 수 없습니다. getInstance을 포인터 대신 참조를 반환하도록 변경하면 제대로 작동합니다.

+0

.nameval 사용 방법을 pls (설명) 할 수 있습니까? – Kiran

+0

@Kiran : 죄송 합니다만, 당신이'operator []'를 재정의하려는 것을 보지 못했습니다. 문제는 사용자 정의 된'operator []'가'types'가 아닌'types'에 존재한다는 것입니다. 포인터에 대한 operator []'는 항상 배열 접근을 의미하며 재정의 될 수 없습니다. 포인터를 참조로 바꾸면 모든 것이 잘됩니다. –

+0

마음에 들지 않으면이 솔루션에서 (&)의 중요성을 설명 할 수 있습니까? 'template std :: size_t size (T (&) [N]) { return N; }' – Kiran