链接使用模板的单独文件

时间:2018-06-14 18:37:23

标签: c++ templates g++ linker-errors

我是将程序分成不同文件的新手。 我正在尝试将(更大)更大的程序分开,我认为'我在这里解决了这些问题:

class_A.h

#ifndef FILE_A
#define FILE_A

template <class T>
class A
{
public:
    T data;

    A ();
};

#endif

class_A.cpp

#include "class_A.h"

template <class T>
A<T>::A () {}

的main.cpp

#include <iostream>
#include "class_A.h"

using namespace std;

int main ()
{
    A<int> foo;

    return 0;
}

我尝试使用:

进行编译
g++ -std=c++11 class_A.cpp main.cpp

并收到错误:

  

/tmp/ccBJWT6K.o:在函数main': main.cpp:(.text+0x1f): undefined reference to A :: A()&#39;   collect2:错误:ld返回1退出状态

当我取走模板时,代码工作正常。所以我的问题是我在这里做错了什么?为什么它被认为是未定义的?

0 个答案:

没有答案