빠른 답변 :
그것은 당신이 달성하고자하는 것에 달려 있습니다.
길고 확장 된 지루한 답변 :
당신은 못을 쳤다.
나는 보통 "C ++"가 "Struct (s)"가 메소드를 선언 할 수 있다는 것을 싫어한다. 바람직하게는 필자는 필요한 메소드에 대해 명시 적 "클래스 (es)"를 사용하고 필드에만 POD "구조 (s)"를 사용합니다.
그러나 나는 다음과 같은 기본적인 간단한 작업에 동의합니다.
- 초기 값 할당 ( "생성자")
- 구조의 사본 만들기 ( "복사 생성자)
- 기존 구조에 값 할당 ( "과부하 할당 연산자")
이러한 환경에서는 구조를위한 방법이 필요하며 그 의미가 있습니다.
암시
또 다른 가능한 해결책은 POD 구조를 사용하는 것이지만 개념적으로 클래스와 객체로 취급하는 것입니다.
이러한 선언을 네임 스페이스로 감싸고 가장 중요한 작업을 위해 전역 함수를 추가하십시오.
코드 선언은 다음과 유사 할 수 있습니다.
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(...)
이 대체 방법은 데이터의 메모리 할당량이 많거나 다른 저수준 공유 라이브러리와 상호 작용할 때 더 좋습니다.
이 접근 방식은 일부 변경 사항이 있으며 게임 개발에 적용됩니다.
특별한
개인적으로, 나는 "C ++"에 대한 구문 확장, 또는이 문제를 해결하는 새로운 "C ++"기반 PL을 고려합니다.
// "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
건배.