2

最近我一直面临着一种非常奇怪的方式来编写原型:

void myProto( QList<::myObject::myStruct> myStructList );

我想知道“<::”和“>”是什么意思?

谢谢 !

4

3 回答 3

8

QList是一个模板,并且QList<Type>是该模板的特化,具有实际的 type ::myObject::myStruct

::范围解析运算符,它告诉编译器myStruct在范围内查找myObject,它本身就在全局范围内。

于 2013-02-27T14:50:11.210 回答
4
::myObject::myStruct

表示在位于全局范围内myStruct的类(或命名空间)中定义。myObject

<>

类型放在这些括号内,它表示该类型的模板的特

于 2013-02-27T14:49:51.823 回答
0

编译以下程序

struct A // GLOBAL A
{
    void f()
    { }
};

namespace nm
{
    struct A // nm::A
    { };

    template <class T>
    struct B
    {
        T a;

    };

    void f1(B<A> b) // WILL NOT COMPILE
    {
        b.a.f();
    }

    void f2(B< ::A> b)  // WILL COMPILE
    {
        b.a.f();
    }
}

int main()
{

}

nm::f1不会编译

nm::f2将编译

这是因为::A(全局 A)有f成员 nm::A但没有f成员。

于 2013-02-27T14:58:08.223 回答