簡體   English   中英

具有奇怪的作用域解析運算符的C ++ typedef

[英]C++ typedef with strange scope resolution operator

我必須移植一些C ++代碼並發現以下奇怪的typedef:

typedef uint32_t SomeClassName::* ptr;

目標編譯器是MSVC ++。 據我了解,這只是為uint32_t*創建了一個名為ptr的別名。 具有SomeClassName::的部分沒有任何用處,並且應由兼容的C ++編譯器視為錯誤。 我是對還是錯?

另外,在SO上發現了異常范圍解析運算符問題,它可能回答了這個問題,但是我不確定。

這是指向成員的指針。 特別是ptr類型的變量可以指向SomeClassName任何uint32_t數據成員。 可以這樣使用:

struct Foo {
    int a;
    int b;
    float c;
};

Foo foo;
int Foo::* ptr;

ptr = &Foo::a;
foo.*ptr = 10; //Set foo.a to 10

ptr = &Foo::b;
foo.*ptr = 15; //Set foo.b to 15

//ptr = &Foo::c; //Won't compile

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM