나는 이것에 대한 작은 예제를 만들 수는 없지만, 누군가는 전에 그것에 뛰어 들었을 것입니다.클래스 메서드에서 연관 배열을 연결할 수없는 이유는 무엇입니까?
나는 방법 void find()
와 클래스, Path
을 가지고 있고이 방법 내부 형 int[string]
의 연관 배열을 인스턴스화 할 때,이처럼 보이는 링커 오류 얻을 : 나는 경우
/tmp/ccTF0A0c.o: In function `_D6object28__T16AssociativeArrayTAyaTiZ16AssociativeArray6rehashMFNdZHAyai':
game.d:(.text._D6object28__T16AssociativeArrayTAyaTiZ16AssociativeArray6rehashMFNdZHAyai[_D6object28__T16AssociativeArrayTAyaTiZ16AssociativeArray6rehashMFNdZHAyai]+0x44): undefined reference to `_D14TypeInfo_HAyai6__initZ'
collect2: ld returned 1 exit status
을 클래스의 멤버에 연관 배열을 사용하면 모든 것이 잘 보입니다.
class Path
{
int[string] bar; // Here it works.
void find()
{
int[string] foo; // Here it fails.
}
}
재현 할 수 없습니다. void main() {}을 사용하여 예제를 컴파일 해 볼 수 있습니까? 또는 rdmd --main game.d –
내보기에는 문제가 표시되지 않습니다. 나는 상대적으로 큰 프로젝트와 분리시킬 수 없다. – nmichaels
글쎄, 실제로 실패한 예제를 제공해야하거나, 당신을 도울 수 없을 것입니다. 로컬 설정과 관련하여 이상한 링커 문제가있을 가능성이 있으며, 컴파일러 버그가 발생했을 가능성이 있습니다. 코드를 과도하게 축소했을 가능성이 있으며, 코드에 실제 문제가 있음을 나타냅니다. 코드를 줄이면 문제가있는 코드를 제거했기 때문에 지적 할 수 없습니다. –