如何从char **转换变量&到char *&以安全的方式?

时间:2016-09-14 11:48:06

标签: c++

在我的cpp项目中,由于某些原因,我有v类型的变量char**&。但实际上我需要将其转换为char*&类型。我该如何进行转换?

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

1 个答案:

答案 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} vmain范围内是安全的。 GetValue接受它的引用然后返回指向值作为引用,具有较高的范围(不是临时的,我得不到警告&#34;返回对临时&#34的引用;而不是如果我返回T()

作为进一步证明,运行此代码可以使我的两个引用相等:

0x28fea8 0x28fea8

这个推理/测试的任何缺陷?