【发布时间】:2011-06-20 04:44:44
【问题描述】:
我想将一个参数传递给一个函数,该函数需要一个 const char **
#include<iostream>
using namespace std;
void testFunc(const char **test){}
string testString = "This is a test string";
int main()
{
const char *tempC = testString.c_str();
testFunc(&tempC);
return 0;
}
这段代码运行良好,但我不想通过临时变量 tempC。我想直接通过 testString.c_str() 。像下面这样,
int main()
{
testFunc(&testString.c_str());
return 0;
}
但是,它显示错误,
error C2102: '&' requires l-value
是否可以不使用临时变量来做到这一点。
【问题讨论】:
-
你不能。为什么你需要
char**而不是char*? -
它的另一个函数需要**const char ****,我只需要向它发送一些数据。我无法更改原型。
-
@iamcreasy:它有什么作用?它有时会改变 test 的值吗?如何以及为什么?在不知情的情况下,我们可以告诉您您所做的事情有什么问题,但不能告诉您如何做您想做的事情......
-
@Tony 我已经发布了@nicol-bolas 回答的第一条评论的详细信息。 :)
-
@iamcreasy:我已投票结束这个问题,因为我认为您会发现上面的问题出于相同的原因涵盖了相同的主题。基本上,您真正想要调用的 glShaderSource 函数需要一个或多个输入字符串,并接受指向这些字符串的指针数组。您最好编写反映该期望的代码,并让您以后轻松添加更多字符串,即使这意味着需要第二行代码。
标签: c++