2012-04-19 4 views
-3

학교 과제를 위해 이산 푸리에 변환 (Discrete Fourier Transform)을 구현 중이며 변형 행렬을 구성하는 클래스 DFT을 만들었습니다. 어떤 이유로, DFT 개체를 main()에서 인스턴스화 할 때 모든 것이 제대로 작동하지만 이름없는 네임 스페이스를 사용하면 매트릭스가 제대로 구성되지 않습니다.이름없는 네임 스페이스에서 생성자가 실패하는 이유는 무엇입니까?

작품 :

int main() 
{ 
    DFT matrix(size); 
    ... 
    matrix.Transform(data); 
    ... 
} 

가 작동하지 않습니다 :

namespace 
{ 
    DFT matrix(size); 
} 

int main() 
{ 
    ... 
    matrix.Transform(data); 
    ... 
} 

컴파일러 버그, 또는 나는 어떻게 익명의 네임 스페이스 작업을 misremembering 무엇입니까?

+6

"작동하지 않음"은 무엇을 의미합니까? '크기'란 무엇입니까? 문제를 (그리고 가능한 한 작게) 설명하고 컴파일러가 방출하는 정확한 오류를 나열하는 완전하고 독립적 인 예제를 제공하십시오. –

+1

James의 제안을 따르는 방법에 대한 자세한 내용은 [짧고, 독립적 인, 컴파일 가능한 예] (http://sscce.org/)를 참조하십시오. –

+0

사과. 처음 포스터, 그리고 나는 오늘 아침에 서둘 렀어. 곧 더 좋은 예를 들어 질문을 업데이트하겠습니다. – DarkMorford

답변

0

그냥 추측 :

namespace 
{ 
    DFT matrix(size); 
} 

가에서 size 나올까요? 이것은 전에을 실행하기 전에 main을 실행하는 것을 기억하십시오.

0

여기서 문제는 당신이 실제로

namespace { 
    DFT matrix(size); 
} 

실제로 함수를 선언인가 ... 그런 이름없는 네임 스페이스에서 생성자를 호출 그렇게 할 수 없다는 것입니다. 한편,

namespace { 
    DFT matrix; 
} 

제로 이니셜 라이저가 사용되지만 작동합니다.

관련 문제