দ্রুত উত্তর:
এটি আপনি কী অর্জন করতে চান তার উপর নির্ভর করে।
দীর্ঘ, প্রসারিত, বিরক্তিকর উত্তর:
আপনি পেরেক আঘাত।
আমি সাধারণত অপছন্দ করি যে "সি ++" "স্ট্রাক্ট (গুলি)" পদ্ধতি ঘোষণা করার অনুমতি দেয়। অগ্রাধিকার হিসাবে, আমি প্রয়োজনীয় পদ্ধতির জন্য সুস্পষ্ট "ক্লাস (এস)" এবং শুধুমাত্র ক্ষেত্রের জন্য পিওডি "স্ট্রাক্ট (গুলি)" ব্যবহার করি।
তবুও, আমি সম্মত হই যে কিছু মৌলিক সাধারণ অপারেশন, যেমন:
- প্রাথমিক মান নির্ধারণ করুন ("কনস্ট্রাক্টর")
- কাঠামোর একটি অনুলিপি তৈরি করুন ("অনুলিপি নির্মাণকারী)
- একটি বিদ্যমান কাঠামোতে মান নির্ধারণ করুন ("ওভারলোড অ্যাসাইনেট অপারেটর")
প্রয়োজন হয় এবং এই পরিস্থিতিতে কাঠামোর জন্য পদ্ধতিগুলি বোধগম্য হয়।
প্রস্তাবনা
আর একটি সম্ভাব্য সমাধান হ'ল পিওডি স্ট্রাকচার ব্যবহার করা, তবে, তবুও তাদের ধারণাগতভাবে শ্রেণি এবং অবজেক্ট হিসাবে বিবেচনা করুন।
সর্বাধিক গুরুত্বপূর্ণ ক্রিয়াকলাপের জন্য এই ঘোষণাগুলি একটি নেমস্পেসে মুড়িয়ে রাখুন এবং গ্লোবাল ফাংশন যুক্ত করুন।
কোড ঘোষণাটি এর অনুরূপ হতে পারে:
namespace Customers
{
struct CustomerStruct
{
char[255] FirstName;
char[255] LastName;
int Age;
bool IsAlive;
bool IsMarried;
}; // struct
CustomerStruct* CreateCustomer
(
char* NewFirstName;
char* NewLastName;
int NewAge;
bool NewIsAlive;
bool NewIsMarried;
)
{
CustomerStruct* NewCustomer = new CustomerStruct();
NewCustomer->FirstName = NewFirstName;
NewCustomer->LastName = NewLastName;
NewCustomer->Age = NewAge;
NewCustomer->IsAlive = NewIsAlive;
NewCustomer->IsMarried = NewIsMarried;
return NewCustomer;
} // CustomerStruct* CreateCustomer (...)
} // namespace
সমাধানটি প্রয়োগ করে এমন কোডটি এরকম কিছু হতে পারে:
#include <Customers>
using Customers;
int main (...)
{
int ErrorCode = 0;
CustomerClass* ThisCustomer =
Customers::CreateCustomer
("John", "Doe", 23, true, true);
// do something with "ThisCustomer"
delete ThisCustomer;
return ErrorCode;
} // int main(...)
এই বিকল্প পদ্ধতির আরও ভাল যখন ডেটা একটি বিশাল মেমরি বরাদ্দ প্রয়োজন হয়, বা অন্যান্য নিম্ন স্তরের ভাগ করা লাইব্রেরি সাথে ইন্টারেক্ট করা হয়।
কিছু পরিবর্তন সহ এই পদ্ধতির গেম ডেভলপমেন্টে প্রয়োগ করা হয়।
অতিরিক্ত
ব্যক্তিগতভাবে, আমি "সি ++" বা এমনকি একটি নতুন "সি ++" ভিত্তিক পিএল এর জন্য একটি সিনট্যাক্স এক্সটেনশন বিবেচনা করি যা এই সমস্যাটি সমাধান করে:
// "Plain Old Data" Structure
// No Methods, No "Functors", allowed
strict struct CustomerStruct
{
char[255] FirstName;
char[255] LastName;
int Age;
bool IsAlive;
bool IsMarried;
}; // strict struct
// Object Oriented "Plain Old Data" Structure
// Yes, Methods and "Functors" allowed
relaxed struct CustomerStruct
{
char[255] FirstName;
char[255] LastName;
int Age;
bool IsAlive;
bool IsMarried;
public void Foo();
public void Bar();
public (void*) (SomeFunctor) ();
}; // relaxed struct
// Class and Object Oriented
class CustomerClass
{
public char[255] FirstName;
public char[255] LastName;
public int Age;
public bool IsAlive;
public bool IsMarried;
public void Foo();
public void Bar();
}; // class
চিয়ার্স।