[완료]volatile 과 CString

tommybee의 이미지

안녕하세요
지금 C++로 코딩하다가 궁금한점이 있어서 질문 드립니다
제가
typedef aTag
{
CString name;
}Tag;

volatile Tag ta;
이렇게 하고
CString st;

st = ta.name;
하니까
error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'volatile class CString'
이런에러가 뜨는데요. 어떻게 해야 될지 모르겠습니다.
물론 키워드를 안쓰면 되긴 되는 데 지금 넣었을 때 어떤 변화가 있는 지 관찰 할려고 하거든요
근데 이렇게 쓰지는 못하는 것인지요....연산자가 오버로딩 안된거는 알겠는데 초보라 그다음은 어케할지 감이 안옵니다

답변 주시면 감사 하겠습니다

cynicjj의 이미지

st.Format(_T("%s"), ta.name);

이런식으로 바꾸니 되는것 같긴 하네요.

근데 정확히 뭐가 어떻게 돌아가는지는 도통...

라스코니의 이미지

왜 volatile 이 필요한지 아셔야겠죠.

volatile 이라는 건 이 형으로 선언된 변수값이 언제라도 바뀔수 있기 때문에 그 부분에 대한 최적화를 하지 않기 위해 쓰는 키워드이거든요..

ta 가 여러 쓰레드에서 공유되어 수시로 rewrite 되는 상황이 아니라면..... 별로 필요가.... 없죠.