生活的天平本不平衡,只有通过努力改变其偏向。

template static 连接错误LNK1120,LNK2019

2008-11-27

我在整理代码时将一组常用函数打包成一个utility类,采用的方案就是静态化成员函数.但是遇到到了Link错误,原以为这个和以前的Link错误一样容易解决(又见link错误之LNK1104,VS2005中郁闷的lnk2001和lnk2019),没想到试了各种办法都失败,仅仅能编译通过,Link时不同的编译器产生不同的错误,VS6产生LNK1120,VS8产生LNK2019.

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class test
{
public:
	test;
	virtual ~test();
	template
	static T Add(T t1, T t2)
	{
		return t1+t2;
	}
};
int main(int argc, char* argv[])
{
	float f1=0.1f,f2=0.2f;
	int i=1,i2=2;
	printf("%f,%d",test_new::Add(f1, f2),test_new::Add(i, i2));
	getchar();
	return 0;
}

通过查各方的资料,没有找到以我这种模式的解决方案.如果你有好的解决方案,麻烦通知本人,谢谢(lokil_#_gmail.com).

我想了一下产生这种错误的原因,是由于Template是不静态编译的,之所以能通过编译,是由于编译器在编译期间,根本没有检测template,只是在调用的时候才去找,所需要的类型.所以就找不到了.

我的解决办法,是老老实实的去掉了static.汗.

作者:lonkil | 分类目录:本站原创编程开发 | 标签:

4 条评论

  1. solu 说道:

    昨天做作业的时候遇到了 LNK2001
    人家说的对,编译错误容易解决,但是连接错误还真头痛!

  2. solu 说道:

    刚刚学模块,但是等老师讲类,我看还要下学期
    自己多少有点接触,但是解决不到你的问题,
    这个程序我也只能看懂部分
    来凑凑热闹的说~~~呵呵,期待高手解决~~~~

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>