C/C++ code:
#include <map>
using namespace std;
template<typename K, typename T>
class a
{
public:
map<K,T> _map;
T find(K v)
{
map<K,T>::iterator iter;
iter = _map.find(v);
if(iter != _map.end())
return iter->second;
else
return (T)0;
}
};
int main()
{
a<int, unsigned int> b;
return 0;
}
为什么这段代码在vc2005中可以编译通过,而在linux(red heat)下不能通过?
那是因为int和unsigned int在linux平台下没有区别。
模板的二义性。与编译器实现有关。
去掉a <int, unsigned int> b;这行也一样,与模板参数无关
test.cpp: In member function `T a <K, T>::find(K)':
test.cpp:11: error: expected `;' before "iter"
test.cpp:12: error: `iter' was not declared in this scope
red heat下编译报这个错
呃,google 模板参数依赖类型。
typename的功能没好好学吧。
加上 typename.
如下:
#include <map>
using namespace std;
template <typename K, typename T>
class a
{
public:
map <K,T> _map;
T find(K v)
{
typename map <K,T>::iterator iter;
相关问答:
在linux下,怎样编译OCI的程序?它的gcc指令是什么?我从网上找的都不能用!还有,我在linux用C与oracle连接,我都需要安装oralce的哪些软件?只需要oralce的客户端,与OCI的库么?别的还需要么?
请高手指教!
......
Linux新手,请大哥大姐不要见笑。
我用root用户登录到Linux系统。在根目录下面建了目录dir1,后用命令cd /dir1进入到dir1目录下,然后再用mkdir dir2建立了目录dir2 ,再后来用命令cd /dir2是,提示为:-bush ......
windows 下的C++编程比较熟练。现在需要转入linux下。
我用的软件是 Source Insight和 SecureCRT , 远程连接 linux服务器。
由于我的 Liunx基础为0. 就是说以前从来都没 ......
• 实验目的
通过本实验,了解Linux系统的组织和行为,观察各种存储系统状态信息的内核变量;熟悉这些结构与信息。
• 实验内容
编写程序打印出如 ......
我安装一台redhat linux5+oracle 10g的服务器,笔记本(XP系统)安装了oracle 10g客户端,结果老是出12560的错误,请高手指点一二,
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dpor ......