C ++链接对象的文件(G ++)(C++ linking object's files (

2019-10-18 04:31发布

class.h

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

using namespace std;

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

 private:
    T m_Data;
};

class.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;
}

此命令返回:

克++ -Wall -pedantic -c main.cpp中

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

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

main.o:在函数'主:main.cpp中:(文本+ 0×11):未定义参照 'CIntegerType <无符号整数> ::显示()' collect2:LD返回1个退出状态

Answer 1:

尝试把你的模板实现在头文件。

请参阅: 为什么只模板在头文件来实现?



Answer 2:

尝试g++ -Wall -pedantic -o main.o class.o代替。 你是否面临同样的问题,在这个问题: G ++ C代码链接到c时,链接顺序依赖++代码

链接器搜索中出现的顺序功能。 既然你有一个模板功能,其使用main必须送入之前的实际代码实例它在连接器class



文章来源: C++ linking object's files (G++)