2016-09-14 47 views
0

在我的cpp項目中,出於某種原因,我有一個變量v,其類型爲char**&。但實際上我需要將它轉換成char*&類型。我應該如何進行轉換?如何以安全的方式將char **變量轉換爲char *&?

static char*& GetValue(char**& _v) 
{ 
    static char* _vv; 
    _vv = (char*)_v; //TODO: remove static 
    return _vv;; 
} 
+0

這真的取決於v的內容等。這是一些功課嗎?因爲這看起來像一些關於C和指針的閱讀需要。你也應該標記這個代碼C而不是C++ – Hayt

+3

@Hayt這個**是** C++。在C中沒有引用。 – NathanOliver

+2

但是太醜了,看起來像C –

回答

0

考慮這個例子(I所定義的char*作爲一種類型,看看它更清楚地):

#include <iostream> 

using namespace std; 

typedef char * T; 
static T & GetValue(T *& _v) { return *_v; } 

    int main() 
    { 
     T s = nullptr; // NULL if not C++ v11 
     T *v = &s; 
     T &vr = GetValue(v); 
    cout << (void*)&vr << " " << (void*)&s << endl; 

    return 0; 

    } 

v是安全的main範圍。 GetValue需要那麼它的引用返回尖值作爲參考,與上範圍(而不是暫時的,我沒有得到任何警告,「臨時回國參考」,而不是如果我回到T()

進一步證明,運行該代碼提供我兩個引用等於:

0x28fea8 0x28fea8 

在此推理/測試中的任何缺陷?