声明:Menu(const char* header_, const char* footer_, const char** options_);
定义:Menu menu(header, footer, (char**){"Option A", "Option B", "Option C", NULL});
他们的数组以红色加下划线。
答案 0 :(得分:2)
是否可以将char **作为参数传递
是
你的代码被加下划线的原因(可能)是因为这段代码非常丑陋/不安全,开发人员在IDE中添加了特殊处理,以便标记这些代码。
如果是遗留代码,我很抱歉。
如果是您的代码(或者您只是有权更改它),请考虑:
用const char**
替换const std::vector<std::string>&
参数(这样你会遇到很少的问题)。
将其他参数替换为对std :: string实例的const引用,或者如果这更适合您的场景,则按值传递。
用nullptr替换NULL(不要在新代码中使用NULL)。
在C ++代码中不使用C风格的强制转换。
不使用尾随下划线作为参数名称。
答案 1 :(得分:1)
#include <array>
Menu menu(header, footer, ::std::array< char const *, 4 >{"foo", "bar", "foobar", nullptr}.data());