วิธีแก้ไขข้อผิดพลาด "ไม่มีตัวสร้างเริ่มต้น" ในC++
"เบี่ยงเบน" ในบริบทนี้หมายความว่าลักษณะการทำงานที่คาดหวังของโค้ดมีการเปลี่ยนแปลง และไม่เป็นไปตามรูปแบบที่คาดไว้อีกต่อไป กล่าวอีกนัยหนึ่ง โค้ดเบี่ยงเบนไปจากเส้นทางที่ต้องการ ปัญหาที่คุณกำลังเผชิญมีสาเหตุมาจากข้อเท็จจริงที่ว่า `std::vector` ไม่มีตัวสร้างเริ่มต้น ดังนั้นเมื่อคุณพยายามสร้างอินสแตนซ์ของ `MyVector ` หากไม่มีข้อโต้แย้งใด ๆ คอมไพเลอร์จะไม่สามารถสร้างวัตถุได้ ในการแก้ไขปัญหานี้ คุณสามารถเพิ่มตัวสร้างเริ่มต้นให้กับคลาส `MyVector` ของคุณที่เริ่มต้นเวกเตอร์ด้วยรายการว่าง:
```
class MyVector {
std::vector
public:
MyVector() : myVector{} {} // default Constructor
// ... other method ...
};
```
This จะอนุญาตให้คุณสร้างอินสแตนซ์ ของ `MyVector` โดยไม่มีข้อโต้แย้งใดๆ และวัตถุจะถูกสร้างขึ้นอย่างถูกต้อง
อีกทางหนึ่ง คุณยังสามารถเพิ่มตัวสร้างที่ไม่มีการโต้แย้งและเริ่มต้นเวกเตอร์ด้วยรายการว่าง:
```
class MyVector {
std::vector< int> myVector;
public:
MyVector(const std::vector
MyVector() : myVector({}) {} // default Constructor
// ... other method ...
};
```
สิ่งนี้ยังช่วยให้คุณสร้างอินสแตนซ์ของ `MyVector` โดยไม่มีข้อโต้แย้งใดๆ และวัตถุจะถูกสร้างขึ้นอย่างถูกต้อง