c语言map的构造函数,如何将std :: map作为c类函数中的默认构造函数参数传递

博主在Ubuntu 12.04环境下使用clang-3.3和3.0版本时,遇到std::map定义和调用的编译错误。通过实验发现,void PrintMap函数的参数类型差异导致编译失败。最终,通过指定默认构造函数解决了问题。读者可能会对跨版本编译细节和异常处理感兴趣。
摘要由CSDN通过智能技术生成

尝试在Ubuntu 12.04上的clang-3.3和clang-3.0中使用std :: map时遇到问题:

#include

#include

#include

class A

{

public:

#if 0 //clang compiles ok

typedef std::map<:string> MapKeyValue_t;

void PrintMap(const MapKeyValue_t &my_map

= MapKeyValue_t())

#else // clang compiles fail

void PrintMap(const std::map<:string> &my_map

= std::map<:string>())

#endif

{

std::map<:string>::const_iterator it;

for (it = my_map.begin(); it != my_map.end(); it++)

{

std::cout << it->first << " " << it->second << std::endl;

}

}

};

int main()

{

A a;

a.PrintMap();

return 0;

}

但是,虽然代码在g和clang中编译,但我仍然将这些错误作为输出:

test.cpp:14:36: error: expected ')'

= std::map<:string>())

^

test.cpp:13:15: note: to match this '('

void PrintMap(const std::map<:string> &my_map

^

test.cpp:14:24: error: expected '>'

= std::map<:string>())

^

test.cpp:28:13: error: too few arguments to function call, expected 2, have 0

a.PrintMap();

~~~~~~~~~~ ^

test.cpp:13:2: note: 'PrintMap' declared here

void PrintMap(const std::map<:string> &my_map

^

3 errors generated.

但是,我不知道出了什么问题.希望有人能够对此有所了解.

更新:

void PrintMap(const std::map<:string> &my_map

= (std::map<:string>()))

没关系.谢谢.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值