读书人

用cl.exe怎么编译C++模板类

发布时间: 2012-02-21 16:26:23 作者: rapoo

用cl.exe如何编译C++模板类
我把c++模板类的定义,实现分别入在了两个文件中,代码如下:
头文件中定义如下:
//templatetest.h
template<typename T>
class myclass
{
T member;
public:
myclass(T obj);
myclass();
void add(T &t);
T get();
};

CPP文件内容如下:
//templatetest.cpp
#include"templatetest.h"

template<typename T>
myclass::myclass(T obj)
{
member=obj;
}

template<typename T>
myclass::myclass()
{
member=0;
}

template<typename T>
void myclass::add(T &t)
{
member=t.member;
}

template<typename T>
T myclass::get()
{
return member;
}
我另外加了一个文件去使用它:

//test.cpp

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

using namespace std;

int main()
{
myclass<int> my;
myclass<int> my1(20);
cout<<my.get()<<ends<<my1.get()<<endl;
return 0;
}

我现在想用visual C++的编译工具cl.exe编译它,怎么编译都不能通过,是怎么回事呀。
我用的是下面的命令编译的:
先转到这三个文件目录下面,再用cl.exe编译:
cl /GX /MT templatetest.cpp
就是这个命令通不过了,请各位指教下!谢谢了!

[解决办法]
M$ 对 ISO C/C++ 规范的支持大致类同于 IE7 之前的浏览器对 W3C 的程度 ...

建议改用 Intel C++ 编译器作为 C++ 前台替代, 可以与 VC 或 G++ 良好整合, 前身曾是工业标准的 KAI C++ 编译器 ...

探讨
我把c++模板类的定义,实现分别入在了两个文件中,代码如下:
头文件中定义如下:
//templatetest.h
template<typename T>
class myclass
{
T member;
public:
myclass(T obj);
myclass();
void add(T &t);
T get();
};

CPP文件内容如下:
/……

[解决办法]
一般情况下你没有多少选编译器的权利,尤其是走工作岗位以后。追求编译器支持标准是编译器厂商的事情,作为程序员,还是应该选择大多数编译器能编译的代码,而不是只有“好”编译器才能编译的
探讨
M$ 对 ISO C/C++ 规范的支持大致类同于 IE7 之前的浏览器对 W3C 的程度 ...

建议改用 Intel C++ 编译器作为 C++ 前台替代, 可以与 VC 或 G++ 良好整合, 前身曾是工业标准的 KAI C++ 编译器 ...


引用:
我把c++模板类的定义,实现分别入在了两个文件中,代码如下:
头文件中定义如下:
//……

[解决办法]
最关键的问题其实就是,去开发一个 “标准的编译器”谁来出钱。
如果有人开发个像 VS+VA那么好用的编译器(但不能那么大),又完全符合标准,而且使用“MIT”协议。
那估计离进入一个标准的时代不远了。

读书人网 >C++

热点推荐