আজ আমি কয়েকজন বন্ধুকে শিখিয়েছিলাম কীভাবে সি 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;
?