อีกทางเลือกหนึ่งคือการใช้PIMPL idiomโดยที่ส่วนหนึ่งของการนำโครงสร้างไปใช้งานจะเป็นตัวชี้ไปยังประเภทอื่น ผู้ใช้ส่วนใหญ่ของคลาสจะรวมไฟล์ส่วนหัวปกติไว้ซึ่งการนำไปใช้งานเป็นตัวชี้ทึบแสง คลาสที่ต้องการเข้าถึงข้อมูลส่วนตัวสามารถรวมส่วนหัวที่กำหนดประเภทอื่นและใช้อินเทอร์เฟซที่ให้ไว้
นี่เป็นรูปแบบทั่วไปสำหรับโปรแกรมเมอร์ C ที่ต้องการฟังก์ชั่นเหมือนเพื่อน ในความคิดของฉันมันยัง hews อย่างใกล้ชิดกับการคิดเกี่ยวกับการแยกความกังวล (หลักการออกแบบที่ดีโดยทั่วไปที่นำไปสู่การใช้ซ้ำรหัส orthogonal) มากกว่า encapsulation (เทคนิค OO เฉพาะที่มีประโยชน์สำหรับการดำเนินการแยกของความกังวล เพื่อทำสิ่งที่ซับซ้อนเกินไป)
มันมีข้อได้เปรียบมากกว่าเพื่อนที่ไม่ได้จับคู่เพื่อนกับเพื่อนเลย บางคนอาจอ้างว่าเป็นข้อเสียเพราะตอนนี้ทุกคนสามารถ "เพื่อน" ชั้นเรียนของคุณ ฉันคิดว่ามันเป็นความกลัวที่ไม่รับประกันเนื่องจากคุณยังคงทำให้ความสัมพันธ์ชัดเจน (โดยรวมส่วนหัว) หากคุณกลัวสิ่งนั้นแสดงว่าคุณกลัวความสามารถ (หรือเพื่อนร่วมงาน) ในการตัดสินใจทางสถาปัตยกรรมที่ชาญฉลาด แต่ถ้าคุณไม่สามารถตัดสินใจได้อย่างถูกต้องในภายหลังทำไมคุณถึงเชื่อมั่นในตัวเองในfriend
ตอนนี้?
มันมีข้อเสียของต้นทุนรันไทม์ โดยการจัดเก็บข้อมูลในตัวชี้คุณมีความต่อเนื่องของแคชที่แย่ลงและจำนวนการจัดสรรที่มากขึ้นและคุณต้องมี destructor เพื่อล้างข้อมูล