C++ 의 변수를 C#의 프로퍼티 처름 사용하기.. (나름 짜본거예욤..)
C++ 2007. 11. 19. 14:11 |C++ 의 변수를 C#의 프로퍼티 처름 사용하기..
말은 거창하지만 다른건 없다. 해당 값을 입력 받을 경우 다른 변수에 값을 추가 하거나 기타 다른 이벤트를 처리 할때 해당 값에 의존적인 클래스에서 처리 할 수 있다는 부분이다.
m_Val = 100 이렇게 입력 받은 후에 다른 이벤트 처리를 의존 프로퍼티 클래스를 상속받은 클래스에서 처리가 가능하게 만들어 본겁니다. ^^..
사용은 해봐야 알겠지만. 괜찮은 확장이 가능해 질거 같네요..
--라이브러리 클래스--
class CGsiDependencyProperty
{
public:
CGsiDependencyProperty() {}
virtual ~CGsiDependencyProperty() {}
//값이 바뀌게 되면 호출할 수 있도록 바인딩 되는 함수
virtual void PropertyChanged() {
int iii = 0;
};
};
template<class T>
class CGsiDataBind
{
public:
CGsiDataBind() { m_pDependencyProp = NULL; }
virtual ~CGsiDataBind() { }
// int a = ?? 이런 코드가 가능합니다.
operator T() {
return m_Data;
}
// ?? = 100 이런 코드가 가능합니다.
T operator = (T value) {
m_Data = value;
if(m_pDependencyProp)
m_pDependencyProp->PropertyChanged();
return m_Data;
}
friend class CGsiDependencyProperty;
void SetDepend(CGsiDependencyProperty* refOper0 = NULL) {
m_pDependencyProp = refOper0;
}
protected:
T m_Data;
CGsiDependencyProperty* m_pDependencyProp;
};
-- 사용법--
해당 변수의 값을 입력 할때 특정 클래스의 함수가 호출 되도록 하는 구조를 취할때
사용하면 됩니다.
호출 되는 함수가 있는 클래스 생성할때 CGsiDependencyProperty을 상속 받아서, virtual로된 함수 PropertyChanged() 를 선언해야합니다
{
virtual void PropertyChanged() {
//값이 바뀌면 호출됨
};
};
이제 변수를 선언하고 프로퍼티 클래스를 선언해서 연결한 후에
변수를 사용하면 됩니다.
CDependA m_Val0Property;
// 변수 선언
CGsiDataBind<int> m_Val0;
m_Val0.SetDepend(&m_Val0Property);
m_Val0 = 100; // 100을 입력하면 m_Val0Property의 클래스 내부 함수가 호출됩니다.
int value = m_Val0; // 해당 값을 일반 변수로 리턴받을 수 있습니다.