Typedef-为什么这个C++代码有效?

san*_*nim 3 c++ stl

这是用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);

这是编译器问题吗?

抱歉我的英文.

bro*_*rto 9

因为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()