1

class.h

#include <iostream>
#include <stdint.h>

using namespace std;

template <typename T>
class CIntegerType {
 public:
    void Show ( void );

 private:
    T m_Data;
};

クラス.cpp

#include "class.h"

template <typename T>
void CIntegerType<T> :: Show ( void ) {
    cout << m_Data << endl;
}

main.cpp

#include "class.h"

int main ( void ) {
    CIntegerType<uint32_t> UINT32;

    UINT32 . Show ();

    return 0;
}

このコマンドは次を返します。

g++ -Wall -pedantic -c main.cpp

g++ -Wall -pedantic -c class.cpp

g++ -Wall -pedantic -o class.o main.o

main.o: 関数 `main' 内: main.cpp:(.text+0x11): 'CIntegerType< unsigned int>::Show()' への未定義の参照 collect2: ld が 1 つの終了ステータスを返しました

4

2 に答える 2

1

g++ -Wall -pedantic -o main.o class.o代わりに試してください。この質問と同じ問題に直面しています: c コードを c++ コードにリンクするときの g++ リンク順の依存関係

リンカは、関数を出現順に検索します。テンプレート関数があるmainため、実際のコードを でインスタンス化する前に、その使用をリンカーに渡す必要がありますclass

于 2013-05-28T20:42:52.280 に答える