2015-12-17 144 views
2

我試圖創建一個C++類模板,它利用了指向成員參數的指針,但編譯失敗。如何從模板中訪問指向成員參數的指針?如何訪問C++類模板中成員參數的指針?

class Base { 
public: 
    int foo; 
    int bar; 
}; 

template<int Base::* T> 
class Derived : public Base { 
public: 
    int Get() { return *T; } <--- Does not work 
}; 

Derived<&Base::foo> test; 
printf("Value = %i\n", test.Get()); 

來自Clang的編譯錯誤是indirection requires pointer operand ('int Test::*' invalid)

回答

0
return this->*T; 

(爲什麼T?這不是一個類型。)

4

嘗試

int Get() { return this->*T; } 

.*->*是取消引用指針到成員的運營商。

+0

謝謝!對不起,你比被接受的答案遲了1分鐘:) – Pol

+2

@Pol:如果你發現一個更新的答案更有幫助,完整等,你總是可以改變接受的答案。 – IInspectable

相關問題