আজ আমি কয়েকজন বন্ধুকে শিখিয়েছিলাম কীভাবে সি structএস ব্যবহার করতে হয় । তাদের একজন জিজ্ঞাসা করলেন যে আপনি structকোনও ফাংশন থেকে কোনওটি ফিরে আসতে পারেন কিনা , আমি এর জবাব দিয়েছিলাম: "না! আপনি পয়েন্টারগুলিকে গতিশীলভাবে mallocসম্পাদনা করতে চানstruct পরিবর্তে এর ।"
এমন কারও কাছ থেকে আসছি যিনি প্রাথমিকভাবে সি ++ করেন, আমি প্রত্যাশা করছিলাম যে structমানগুলি অনুসারে আর ফিরে আসতে পারবে না । সি ++ এ আপনি operator =আপনার অবজেক্টগুলির জন্য ওভারলোড করতে পারেন এবং মান দিয়ে আপনার অবজেক্ট ফিরিয়ে দেওয়ার জন্য কোনও ক্রিয়াকলাপ অনুধাবন করতে পারেন complete সি তে তবে আপনার কাছে সেই বিকল্প নেই এবং তাই সংকলকটি আসলে কী করছে তা আমাকে ভাবতে পেরেছিল। নিম্নোক্ত বিবেচনা কর:
struct MyObj{
double x, y;
};
struct MyObj foo(){
struct MyObj a;
a.x = 10;
a.y = 10;
return a;
}
int main () {
struct MyObj a;
a = foo(); // This DOES work
struct b = a; // This does not work
return 0;
}
আমি বুঝতে পারি কেন struct b = a;কাজ করা উচিত নয় - আপনি operator =আপনার ডেটা ধরণের জন্য ওভারলোড করতে পারবেন না । এটি কীভাবে a = foo();জরিমানা সংকলন করে? এর মানে কি অন্য কিছু struct b = a;? হয়তো জিজ্ঞাসা করার প্রশ্নটি হ'ল: স্বাক্ষর করতে returnসম্মতিতে বিবৃতিটি ঠিক কী করে =?
[সম্পাদনা]: ঠিক আছে, আমি কেবল struct b = aএকটি সিনট্যাক্স ত্রুটি হিসাবে চিহ্নিত করেছি - এটি সঠিক এবং আমি একটি বোকা! কিন্তু এটি আরও জটিল করে তোলে! ব্যবহার struct MyObj b = aসত্যিই কাজ করে! আমি এখানে কি মিস করছি?
struct MyObj b = a;এটি কাজ করে বলে মনে হচ্ছে :)
struct b = a;একটি সিনট্যাক্স ত্রুটি। আপনি যদি চেষ্টা করেনstruct MyObj b = a;?