[C++/CLI] Value 타입은 기본 생성자만 갖는다

  • Post author:
  • Post category:
  • Post comments:2 Comments
  • Post last modified:July 24, 2008
#include "stdafx.h"

using namespace System;

value struct Point
{
public:
	int x, y;
	Point() {
		x = 0;
		y = 0;
	}
};

Problem of struct default constructor in vc++2005 beta1란 토론이 있는데, 위의 코드를 실행하니까 Error 1 error C3417: ‘Point :: Point’ : value types cannot contain user-defined special member functions란 오류가 뜨더란 이야기다. 별 이야기는 아니니까 바로 결론을 말하자면, 이건 CLR 명세에 따른 오류다. 값 타입은 무조건 0으로 초기화되며 사용자 정의 생성자를 갖지 못한다. 만약 생성자 역할을 해줄 뭔가가 필요하다면 이렇게 하면 된다.

#include "stdafx.h"

using namespace System;

value struct Point
{
public:
	int x, y;
	Point New() {
		Point point;
		point.x = 1;
		point.y = 2;
		return point;
	}
};

어라, 정리해놓고 보니 C#쪽에선 사용자 정의 생성자가 들어가도 되네. C++/CLI에만 해당하는 이야긴가? 좀더 자세히 알아봐야겠다.

Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.
follow me
  • 싸이월드 법인가 뭔가 화제였는데 이런 게 훨씬 현실적인 접근이다 https://t.co/fSB9LiMYzO
    1 day ago
  • 시장을 좋게 보는 사람을 좋게 볼 근거를 찾고 그렇지 않은 사람은 나쁘게 볼 근거만 열심히 찾네. 그 반대로 해야 얻는 게 있을텐데
    1 day ago
  • 일본이 liberal country 라는 말이 마음에 걸리네 https://t.co/aLteP9gEE8
    2 days ago
Buy me a coffeeBuy me a coffee
×
Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.
Latest Posts