0

ご存知のように、定数のデフォルトは内部リンケージです。

const int Buf = 1000;  // defaults to internal linkage

buf はヘッダー ファイルで定義できます。これは、それが定義されているファイル内でのみ表示され、リンク時に他の翻訳単位からは表示されません。

ただし、いくつかの複雑な構造定数が次のように定義されている場合:

- constants.h
const complicatedClass myObject("I'm a const object","internal linkage",5);

complexClass 定義:

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は多くの場所(複数のファイル)で定義されるべきではありません.

誰でもこの問題を説明できますか? 前もって感謝します。

4

1 に答える 1