所以我有一个看起来像这样的程序:
const char *Argv[] = {"stuff", "stuff1", "stuff3"};
bool pass = xxxxx::yyyyy(Argv.begin(), Argv.end(), Tri);
我认为这是非法的,因为 const char *
不是用户定义的类型。但是,我不确定如何解决这个问题。我需要更改第一行还是第二行?还是两者兼而有之?
最佳答案
Argv
是一个数组(const char*
),是的,你不能调用 begin()
和 end()
如您的代码所示,数组没有此类成员函数。相反,您可以使用 std::begin
和 std::end
const char *Argv[] = {"stuff", "stuff1", "stuff3"};
bool pass = xxxxx::yyyyy(std::begin(Argv), std::end(Argv), Tri);
如果您改用其他标准容器,例如 std::vector
或 std::array
,那么您可以调用成员函数 begin()
和 end()
。请注意,即使对于这些容器,您仍然可以对它们使用 std::begin
和 std::end
,这与调用它们的成员函数 begin 具有相同的效果()
和 end()
。
关于带有 .begin() 和 .end() 的 C++ const char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62135867/