Apakah ada cara untuk hanya menggunakan beberapa argumen opsional dari suatu fungsi? Jadi jika saya memiliki fungsi seperti ini,

void f(int a = 0, int b = 1) {}

Dapatkah saya memanggil f() dan hanya menentukan b dan membiarkan a pada nilai defaultnya?

1
user11914177 12 Mei 2021, 22:44

1 menjawab

Jawaban Terbaik

Saya harap. C++ tidak memiliki fitur ini yang umum dalam bahasa lain (seperti C# atau Python).

Untuk saat ini, Anda terjebak dengan menjadi sangat pintar merancang urutan parameter Anda, atau memfaktorkan ulang parameter Anda menjadi struct kecil:

struct f_args
{
   int a = 0;
   int b = 1;
};

Sekarang Anda secara opsional dapat mengatur apa pun yang Anda inginkan:

void f(f_args args){/*...*/};

// ...
f_args args;
args.b = 2;
f(args);

Atau dengan inisialisasi yang ditunjuk (C++20):

f({.b=2});

Library parameter Boost mencoba untuk mengatasi masalah ini dengan cara yang lebih kuat.

6
AndyG 12 Mei 2021, 20:00