2011-07-06 2 views
2

전용 전용 cpp/h 파일 콤보에 정적 전용 멤버가있는 클래스가있는 프로그램을 만들었습니다. 아마도 이러한 코드를 정적 멤버로 사용하려고하면 링커 스테이지에서 "해결되지 않은 외부"오류가 발생합니다. 오류가 발생하는 내 cpp 파일에 h 파일을 포함하는 것을 기억합니다. 나는 이해하지 못한다. 이것은 잘못된 디자인 접근 방식을 취할 것인가?C++ 클래스의 정적 멤버를 사용할 때 링크 프로세스에서 해결되지 않은 외부 오류가 발생할 수있는 것은 무엇입니까?

기본적으로 내 전체 프로그램에서 사용할 수있는 제 3 자 API의 일부인 전역 개체가 필요하므로 모든 것을 하나의 클래스로 구성하고 모든 것을 정적 멤버로 만들었습니다. 또한 클래스를 인스턴스화하지 못하도록 비공개 개인 생성자를 만들었습니다. 이것은 합리적인 접근입니까? 정적 멤버는 모두 포인터이며 새로운 객체를 할당하고 각각을 정적 poonter에 연결하여 시작하려고했습니다. 이 접근 방식에 문제가 있습니까?

감사합니다.

+0

당신이 템플릿을 사용하고 있습니까? –

+3

코드 및 오류 출력을 보여주는 작은 코드 샘플을 제공 할 수 있습니까? – aardvarkk

답변

3

실제로 변수를 머리글에 선언하는 대신 어딘가에 실제로 정의하는 것을 기억하고 있습니까?

Foo.hpp :

#ifndef FOO_HPP 
#define FOO_HPP 

class Foo { 
public: 
    static int bar; 
}; 

#endif 

foo.cpp의 :

#include "Foo.hpp" 

int Foo::bar; // <-- This being the critical line. 
+0

이것은 그 것이었다!! 감사합니다 잭과 모두! – Nerd

0

타사 라이브러리에서 전역 개체에 액세스하는 경우 해당 라이브러리와 연결되어 있는지 확인해야합니다. 라이브러리 헤더를 컴파일하면됩니다.

관련 문제