c++使用模板 new时提示undefined reference

C++语言 码拜 9年前 (2016-04-28) 1677次浏览
poor.h代码:

#ifndef _POOR_H_
#define _POOR_H_
using namespace std;
//池
template<class D> 
class Poor
{
public:
	Poor();

	~Poor();
};
#endif

poor.cpp

#include "poor.h"
template<class D> 
Poor<D>::Poor()
{
}
template<class D> 
Poor<D>::~Poor()
{
}
typedef struct
{
	int key;
	char value[20];
} stParseMap;
int main (int argc,char *argv[])
{
	Poor<stParseMap> *b = new Poor<stParseMap>();//该行编译报错
	return 0;
}

makefile:

#!/bin/ksh
IFLAGS=-DSS_64BIT_SERVER -D_REENTRANT -D_DSCI_ -D_THREAD_LOG_ -D_DEBUG_INFO_ -D_TIME_LOG_ 
INCLUDE=-I.
LIB=-L. 
.SUFFIXES:.cpp .o
CFLAGS = ${IFLAGS} ${INCLUDE}
CC=g++ -m64 -g -O2 -fpermissive
OBJ = ibeartest.o poor.o
BIN=ibeartest
all:${BIN} install clean
.cpp.o:
        echo "Compiling the $<"
        $(CC) -c ${CFLAGS} $<
.c.o:
        echo "Compiling the $<"
        $(CC) -c ${CFLAGS} $<
clean:
        rm -f ibeartest.o poor.o
######################################################################
${BIN}: $(OBJ)
        $(CC) ${CFLAGS} -o $@ $? ${LIB}
######################################################################
install:

程序在hp-hx acc上编译可以通过~
移植到linux g++ 编译时报错:
make -f makefile
g++ -m64 -g -O2 -fpermissive -DSS_64BIT_SERVER -D_REENTRANT -D_DSCI_ -D_THREAD_LOG_ -D_DEBUG_INFO_ -D_TIME_LOG_  -I. -o ibeartest ibeartest.o poor.o -L.
ibeartest.o: In function `main”:
/ocsapp/account/work/wangzhia/cc/ibeartest.cpp:24: undefined reference to `Poor<stParseMap>::Poor()”
collect2: ld 返回 1
make: *** [ibeartest] 错误 1

解决方案

40

#include “poor.cpp”

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明c++使用模板 new时提示undefined reference
喜欢 (0)
[1034331897@qq.com]
分享 (0)