可変個引数リスト (...) (C++/CLI)

この例では、C++/CLI で ... 構文を使って可変個の引数を持つ関数を実装する方法を示します。

Note

これは C++/CLI に関するトピックです。 ISO Standard C++ での ... の使用については、「省略記号と可変個引数テンプレート」と、「後置式」の「省略記号と既定の引数」を参照してください。

... を使用するパラメーターは、パラメーター リストの最後のパラメーターにする必要があります。

コード

// mcppv2_paramarray.cpp
// compile with: /clr
using namespace System;
double average( ... array<Int32>^ arr ) {
   int i = arr->GetLength(0);
   double answer = 0.0;

   for (int j = 0 ; j < i ; j++)
      answer += arr[j];

   return answer / i;
}

int main() {
   Console::WriteLine("{0}", average( 1, 2, 3, 6 ));
}
3

コード例

次の例では、引数の数が可変である Visual C++ の関数を C# から呼び出す方法を示します。

// mcppv2_paramarray2.cpp
// compile with: /clr:safe /LD
using namespace System;

public ref class C {
public:
   void f( ... array<String^>^ a ) {}
};

たとえば、関数 f は、可変個の引数を受け取ることができる関数であるかのように、C# または Visual Basic から呼び出すことができます。

C# では、ParamArray パラメーターに渡される引数は、可変個の引数で呼び出すことができます。 C# でのコード例を次に示します。

// mcppv2_paramarray3.cs
// compile with: /r:mcppv2_paramarray2.dll
// a C# program

public class X {
   public static void Main() {
      // Visual C# will generate a String array to match the
      // ParamArray attribute
      C myc = new C();
      myc.f("hello", "there", "world");
   }
}

Visual C++ の f の呼び出しは、初期化された配列または可変長配列を渡すことができます。

// mcpp_paramarray4.cpp
// compile with: /clr
using namespace System;

public ref class C {
public:
   void f( ... array<String^>^ a ) {}
};

int main() {
   C ^ myc = gcnew C();
   myc->f("hello", "world", "!!!");
}

関連項目

配列