কীভাবে সি ++ তে পয়েন্টারকে রেফারেন্সে রূপান্তর করতে / রূপান্তর করতে হয়


143

Object *obপ্রোটোটাইপ কোন ফাংশনে আমি কীভাবে একটি পয়েন্টার ( ) পাস করতে পারি void foo(Object &)?


শিরোনামটি "poinাল [sic] পয়েন্টার রেফারেন্স" বলছে তবে প্রশ্নটি একটি পয়েন্টার দিয়ে শুরু হয় এবং একটি রেফারেন্স প্রয়োজন। এটি কোন দিকে?
MSalters

@ এসএমএলটারদের এটি রূপান্তর করা উচিত । আমি এটি সম্পাদনা করছি। তবে আমি যাই হোক না কেন সমাধানের সন্ধান করছিলাম, তাই আমি কাস্টের
ডিউসওয়ার্ল্ড

উত্তর:


209

এটিকে কল করুন:

foo(*ob);

আপনার প্রশ্নের শিরোনামে পরামর্শ হিসাবে এখানে কোনও ingালাই চলছে না তা নোট করুন। আমরা যা করেছি তা হ'ল পয়েন্টারটিকে ডি-রেফারেন্স করা হয়েছে যা আমরা তারপরে ফাংশনে প্রেরণ করি।


25
@ রিকোবব এটি প্রায়শই তাই ঘটে থাকে। সহজেই বোঝা যায় এমন সহজ প্রশ্নের উত্তরগুলি প্রায়শই প্রচুর ভোট সংগ্রহ করে। কৌশলগত প্রশ্নের দীর্ঘ এবং জটিল উত্তরগুলি প্রায়শই কয়েকটি আপত্তি পেয়ে যায় কারণ ভোটাররা সহজেই যোগ্যতার বিচার করতে পারেন না। রিপ্রেস হিসাবে, রেপ ক্যাপের কারণে আমি এতে কিছুই পেলাম না। ;-) তবে আমি আন্তরিকভাবে একমত। আমি আশা করি জটিল উত্তরগুলি আরও খ্যাতি অর্জন করেছিল।
ডেভিড হেফারনান

@ ডেভিডহেফেরানন হ্যাঁ এটি সমস্যা বলে মনে হচ্ছে - আমি মনে করি এটি কোনও সমস্যা মেটাএসওতে নেওয়া - যদি কেউ ইতিমধ্যে এটি উত্থাপন না করে তবে।
রিচিবব

4
এটি কি কোনও অনুলিপি তৈরি করে ob, বা কেবল পয়েন্টারটিকে একটি রেফারেন্সে রূপান্তর করে (যদি না দেওয়া হয়)? যদি obহত nullptr?
ড্রয় নোকস

5
@ ড্রউ এটি কেবলমাত্র পয়েন্টারটিকেই অবহিত করে। কোনও অনুলিপি নেই। কোনও রূপান্তর নেই। Castালাই নেই। এরপরে অবজেক্টটি ফাংশনের রেফারেন্স দ্বারা পাস করা হয়। বিন্দুটি শূন্য হলে এটি ত্রুটি।
ডেভিড হেফারনান


41
foo(*ob);

আপনার এটি কাস্ট করার দরকার নেই কারণ এটি একই অবজেক্টের ধরণের, আপনাকে কেবল এটির অবলম্বন করতে হবে।


প্রচুর পরিমাণে যোগ করার অনুমান করা ... সাধারণত এখানে ভাল উত্তরের ফর্ম্যাট হয় না (যদিও এই ক্ষেত্রে এটি সঠিক) তবে সম্ভবত এই কারণেই আপনি একটি ডাউন ডাউন পেয়েছিলেন।
কিলিয়ানডিএস

5
ভাই, আমি "আমার অনুমান" যুক্ত করেছি কারণ এটি আমাকে কমপক্ষে 30 টি লিখতে বাধ্য করেছে।
এইভাবেই

10
@ রোয়েগাভিরেল আমি আপনার প্রথম আপ-ভোটার, কারণ আমি অনুমান করি যে এই জনপদটি কঠোর হবে। FWIW আপনি 30 টি চর সীমা ছাড়িয়ে যেতে পারেন তবে একটি HTML মন্তব্য যোগ করুন <! -----------------------------> যা আমি করেছি আমার উত্তর প্রথম উত্তর! আপনার উত্তরে আমার সম্পাদনাটি কীভাবে তা দেখায়।
ডেভিড হেফারনান

কোড-কেবল উত্তরগুলি, কোনও ব্যাখ্যা ছাড়াই, এই দিনগুলিতে ভ্রূণ্য রয়েছে।
কিথ এম

1
@ কিথম - এটি একটি এলোমেলো মন্তব্য এবং -১। উত্তরটি প্রায় 6 বছর আগে দেওয়া হয়েছিল, এছাড়াও প্রশ্ন "কেন" এটি কেবল "কীভাবে" চেয়েছিল তাও জিজ্ঞাসা করেনি। তবে নিশ্চিত, আমি একটি ব্যাখ্যা যুক্ত করব।
রুই গ্যাভেরেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.