这是用C++编写的一些代码:
#include <iostream>
int main(){
typedef map<int,int> b;
b tC;
b::iterator iMap;
b().swap(tC);
}
Run Code Online (Sandbox Code Playgroud)
我试过了
b.swap(tc);
但是我一直都错了.
我无法理解的是,为什么不能呢b.swap(tC);?
这是编译器问题吗?
抱歉我的英文.
因为b是一种类型.你不能打电话swap给一个类型.你需要构建一个类型的对象b然后调用swap它,这就是你要做的事情b().swap(tC);
这一行typedef map<int,int> b;创建了一个名为的新类型b,它具有的属性map<int,int>.因此,为了使用类型b和类型对象,b您必须遵循与使用类相同的规则map<int,int>.
在类中map,function swap是一个成员函数.这就是为什么你需要一个对象才能使用它.如果它是一个静态函数,你可以直接在类型上调用它,虽然它的语法有点不同:b::static_function()