在我的cpp项目中,由于某些原因,我有v
类型的变量char**&
。但实际上我需要将其转换为char*&
类型。我该如何进行转换?
static char*& GetValue(char**& _v)
{
static char* _vv;
_vv = (char*)_v; //TODO: remove static
return _vv;;
}
答案 0 :(得分:0)
考虑这个例子(我将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;
}
{p} v
在main
范围内是安全的。 GetValue
接受它的引用然后返回指向值作为引用,具有较高的范围(不是临时的,我得不到警告&#34;返回对临时&#34的引用;而不是如果我返回T()
)
作为进一步证明,运行此代码可以使我的两个引用相等:
0x28fea8 0x28fea8
这个推理/测试的任何缺陷?