اكتب كود C++ لتطبيق .cpp لواجهات WebIDL الموضحة أدناه. الواجهات مأخوذة من معيار URL الخاص بـ WHATWG.

```ويبيدل
[مكشوف=\*،
 LegacyWindowAlias=webkitURL]
عنوان URL للواجهة {
 مُنشئ (USVString url، قاعدة USVString اختيارية)؛

 سمة الوتر USVString href؛
 سمة للقراءة فقط أصل USVString؛
 سمة بروتوكول USVString؛
 اسم مستخدم السمة USVString؛
 سمة كلمة مرور USVString؛
 سمة مضيف USVString؛
 اسم مضيف السمة USVString؛
 سمة منفذ USVString؛
 اسم مسار السمة USVString؛
 سمة بحث USVString؛
 [SameObject] سمة URLSearchParams للقراءة فقط، searchParams؛
 سمة تجزئة USVString؛

 USVString toJSON();
};

[مكشوف=\*]
واجهة URLSearchParams {
 buildor(اختياري (sequence> أو سجل أو USVString) init = "");

 إلحاق غير محدد (اسم USVString، قيمة USVString)؛
 حذف غير محدد (اسم USVString)؛
 USVString؟ الحصول على (اسم USVString)؛
 تسلسل getAll(USVString name);
 boolean has(USVString name);
 مجموعة غير محددة (اسم USVString، قيمة USVString)؛

 فرز غير محدد ()؛

 متوقعة؛
 موتر.
};
```

بالنسبة لكل "سمة" تحتوي على حرفي getter وsetter، تأكد من استخدام بناء الجملة \_\_declspec(property()). فيما يلي بعض الأمثلة على بناء جملة \_\_declspec(property())‎:

```CPP
بناء MyArray
{
 \_\_declspec(property(get=get\_item, put=set\_item)) int item[];

 int get\_item(int فهرس) {
 // قم بإرجاع القيمة إلى الفهرس المحدد
 إرجاع \_items[index];
 }

 مجموعة باطلة\_item(مؤشر كثافة العمليات، قيمة كثافة العمليات) {
 // قم بتعيين القيمة في الفهرس المحدد
 \_items[index] = value;
 }

 int \_items[10];
};

انت مين()
{
 صفيف MyArray؛

 // قم بتعيين قيمة العنصر الأول في المصفوفة
 array.item[0] = 10;

 // احصل على قيمة العنصر الأول في المصفوفة
 int x = array.item[0];

 العودة 0؛
}
```

```CPP
شخص هيكلي
{
 \_\_declspec(property(get=get\_name, put=set\_name)) std::string name;

 std::string get\_name() const {
 إرجاع \_الاسم؛
 }

 مجموعة باطلة\_name(const std::string& value) {
 إذا (القيمة. فارغة ()) {
 throw std::invalid\_argument("لا يمكن أن يكون الاسم فارغًا");
 }
 \_name = القيمة؛
 }

 std::string \_name;
};

انت مين()
{
 شخص شخص؛

 // اضبط اسم الشخص على "جون"
 اسم الشخص = "جون";

 // سيطرح السطر التالي استثناءً لأن الاسم فارغ
 اسم الشخص = "";

 العودة 0؛
}
```
{"evolved_from": null, "kind": "human", "source": "ewof/sharegpt-instruct-unfiltered-deduped"}