【问题标题】:How to pass array to function without variable instantiation, in C++如何在C ++中将数组传递给没有变量实例化的函数
【发布时间】:2011-02-15 13:33:37
【问题描述】:

我可以在 C++ 中执行此操作吗(如果可以,语法是什么?):

void func(string* strs) {
    // do something
}
func({"abc", "cde"});

我想将数组传递给函数,而不是将其实例化为变量。

【问题讨论】:

    标签: c++


    【解决方案1】:

    我认为你不能在 C++98 中做到这一点,但你可以在 C++1x 中使用 initializer_lists

    【讨论】:

    • 我非常喜欢 initializer_lists。
    • 您的链接示例使用std::vector。你怎么能对数组做同样的事情?
    【解决方案2】:

    在当前的 C++ 中无法做到这一点,正如 C++03 所定义的那样。

    您正在寻找的功能称为“复合文字”。它存在于 C 语言中,由 C99 定义(当然具有特定于 C 的功能),但不存在于 C++ 中。

    也计划为 C++ 提供类似的功能,但目前还没有。

    【讨论】:

    • C++11 怎么样?
    【解决方案3】:

    正如所写,您不能这样做。该函数需要一个指向字符串的指针。即使您能够将数组作为文字传递,函数调用也会产生错误,因为文字被认为是常量(因此,文字数组的类型为const string*,而不是函数所期望的string*)。

    【讨论】:

    • 如果我不实例化一个变量,它仍然有一个指针(地址)。
    【解决方案4】:

    使用可变参数函数将无限的无类型信息传递给函数。然后对传入的数据做任何你想做的事情,比如把它塞进一个内部数组中。

    variadic function

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-28
      • 1970-01-01
      • 2021-05-09
      • 1970-01-01
      • 1970-01-01
      • 2018-01-20
      • 1970-01-01
      相关资源
      最近更新 更多