কর্টর এবং অ্যাসাইনমেন্টটি ব্যক্তিগত করে (বা সেগুলিকে সি ++ এ মুছুন হিসাবে ঘোষণা করে) অনুলিপিটি অক্ষম করুন।
এখানে পয়েন্টটি যেখানে আপনাকে এটি করতে হবে। আপনার কোড সহ থাকার জন্য, আইএবস্ট্রাক্ট কোনও সমস্যা নয়। (মনে রাখবেন যে আপনি যা করেছেন তা করছেন, আপনি *a1 IAbstractসাবোবজেক্টটি a2 তে অর্পণ করেছেন , কোনও রেফারেন্স হারিয়েছেন ue Derivedভ্যালু অ্যাসাইনমেন্টটি বহুরূপী নয়)
বিষয়টি নিয়ে আসে Derived::theproblem। অন্যের মধ্যে ডেরিভড অনুলিপি করা আসলে এমন *theproblemডেটা ভাগ করতে পারে যা ভাগ করে নেওয়ার জন্য নকশাকৃত নাও হতে পারে (এমন দুটি উদাহরণ রয়েছে যা delete theproblemতাদের ধ্বংসকারীকে কল করতে পারে )।
যদি তা কেস হয় তবে Derivedএটি অবশ্যই অনুলিপিযোগ্য এবং অ্যাসাইয়েবল নয়। অবশ্যই, যদি আপনি অনুলিপিটি ব্যক্তিগতভাবে তৈরি করেন IAbstract, যেহেতু Derivedএটির জন্য ডিফল্ট অনুলিপি প্রয়োজন হয় তবে Derivedতা অনুলিপিযোগ্যও হবে না। তবে আপনি যদি অনুলিপি Derived::Derived(const Derived&)কল না করে নিজের নিজস্ব সংজ্ঞা দেন তবে আপনি IAbtractসেগুলি অনুলিপি করতে পারেন।
সমস্যাটি ডারাইভেডে রয়েছে এবং সমাধানটি অবশ্যই ডারাইভের মধ্যে থাকতে হবে: যদি এটি কেবলমাত্র পয়েন্টার বা রেফারেন্স দ্বারা অ্যাক্সেস করা একটি গতিশীল-কেবলমাত্র বস্তু হয় তবে এটি নিজেই প্রাপ্ত হওয়া উচিত
class Derived
{
...
Derived(const Derived&) = delete;
Derived& operator=(const Derived&) = delete;
};
মূলত ডাইরাইভ শ্রেণীর ডিজাইনার (এটি ডেরাইভড কীভাবে কাজ করে এবং কীভাবে theproblemপরিচালিত হয় তা জেনে রাখা উচিত ) অ্যাসাইনমেন্ট এবং অনুলিপি সহ কী করবেন তা সিদ্ধান্ত নিতে হবে।