[英]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.