아시다시피 상수는 내부 연결로 기본 설정됩니다.이 복잡한 구조 상수는 내부 링크입니다.
const int Buf = 1000; // defaults to internal linkage
buf에이 헤더 파일에서 정의 할 수 있습니다, 그것은 단지가 정의되고 다른 번역 단위로 링크시 볼 수없는 파일 내에서 볼 수 있습니다. 몇 가지 복잡한 구조 상수는 다음과 같이 정의 된 경우
그러나 :
- constants.h
const complicatedClass myObject("I'm a const object","internal linkage",5);
complicatedClass 정의 :
class complicatedClass
{
private :
char* charArry;
std::string strTemp;
static int numbers;
int mSize;
public:
complicatedClass();
complicatedClass(char* pChrArry, std::string temp, int size);
~complicatedClass();
public:
void print() const;
std::string getStrTemp() const;
};
는 그 컴파일이 복잡한 구조 상수의 저장을 작성해야합니다 것, 따라서 외부해야 결합. 그러나이 상수 헤더 파일 (constants.h)이 여러 파일에 포함되어 있으면 모든 것이 정상입니다. 링커 오류가 제기되어야한다고 가정하고, myObject를 여러 위치에 여러 파일로 정의해서는 안됩니다.
누구든지이 문제를 설명 할 수 있습니까? 미리 감사드립니다.
이 링크의 "헤더 파일의 const"섹션을 참조하십시오. http://www.mi.uni-koeln.de/c/mirror/www.codeguru.com/cpp/tic/tic_html.zip/ tic0092.html – yao
은 분명하지 않습니다. 누구라도이 사건을 도울거야? – yao