2012-02-02 4 views
0

공통 기능 클래스가 있습니다. 기본 물건, 그냥 내 프로젝트에서 사용할 수있는 여러 클래스 기능이 있습니다. 하지만 여러 클래스가 몇 가지 것들을 사용할 수 있도록 구조체 배열을 추가하려고합니다. 필자는 다른 클래스 (클래스 1)에서이 구조체 배열을 제거하고이를 내 CommonFunctions 클래스에 추가했습니다. 그들은 단지 읽힐 것이다.공통 기능 클래스에 배열을 추가 할 때 링크 오류가 발생했습니다.

그러나 임 점점 오류 :

CommonFunctions.obj : 오류 LNK2005 : "구조체 pup_file * 새끼"이미 Class1.obj에 오류 LNK2005 정의 (A 새끼 @@ 3PAUpup_file @@?) "구조체 pup_file을 * 새끼 "이미 Class1.obj에 정의

치명적인 오류 LNK1169 (새끼 @@ 3PAUpup_file @@?) : 하나 개 이상의 곱하기 정의 기호는 CommonFunctions를 사용하는 (프로젝트의 다른 모든 클래스에 대해 다음

발견 클래스, 그래서 그들 모두 진짜) 내가 얻을

오류 LNK2005 : "구조체 pup_file * 새끼"이미

누구나 무슨 일이 여기에 무슨 좀 도와 main.obj에 정의 된 (A 새끼 @@ 3PAUpup_file @@?)?

+1

일부 코드를 보는 것이 도움이 될 것입니다. 나는 당신이 "인라인"을 사용하지 않고 헤더 안에 함수를 정의하고 있다고 생각합니다. – Goz

+0

불행히도 코드를 온라인에 게시 할 수 없습니다. 하지만 헤더에 정의하려고합니다. 난 그냥 인라인 만들기 시도하고있다 : '인라인'데이터 선언에 허용되지 않습니다 – discodowney

+0

고정. 배열을 정적으로 만들어야했습니다. Cos CommonFunctions는 각 include에 여러 번 정의 된 파일로드에서 사용되었습니다. 그것을 정적으로 만드는 것은 단지 그것을 한 번합니다. (적어도 내가 수집하는 것) – discodowney

답변

0

포인터를 클래스 정의 안에pups (배열이 아닙니다)으로 선언하지 않은 것 같습니다.
헤더에 있지만 클래스 외부에 넣으면 오류가 발생합니다.

해결책은 CommonFunctions 클래스 정의 내에서 pups이 선언되어 있는지 확인하는 것입니다.

0

정적으로 만들기에 대한 의견을 읽은 후에는 static이 아닌 extern으로 정의하고 싶을 것입니다. 정적을 의미하는 것은 그 정의를 포함하는 모든 것이 자신의 OWN 복사본을 얻는다는 것입니다 (즉, 복사본이 모든 파일 그것은 그것을 포함한다).

Extern은 c/cpp 파일에서 어딘가에 정의해야하지만 한 번만 정의해야하며 그 extern을 포함하는 컴파일 단위는 동일한 구조를 사용합니다.

물론 각 컴파일 단위에 해당 변수의 복사본이 있어야하고 정적 인 경우에는 원하는대로 지정할 수 있습니다.

관련 문제