C++에서 값 없음을 어떻게 나타내야 하나요?
글쓴이: dltkddyd / 작성시간: 수, 2012/02/22 - 5:59오후
template<typename TT>
class mymy{
private:
TT* myR;
public:
mymy(int length) {
myR=new TT[length];
}
allocateV(int ind, TT value) {
myR[ind] = value;
}
};
위와 같이 만들었습니다. 그리고 다음과 같이 다섯 개를 만듭니다.
mymy ex1(5);
ex1.allocateV(0,10);
ex1.allocateV(1,20);
그리고 ex1.allocateV(2,값이 없음을 나타내는 것);
세 번째에는 값이 없음을 나타내는 값을 집어넣고 싶은데요. template의 타입인수에 상관없이 값이 없음을 나타내는 값으로 무엇을 전달해야 하는지 궁금합니다.
Forums:


포인터면 null 메모리할당되었으면 0x00
포인터면 null 메모리할당되었으면 0x00
흠, 포인터가 아닙니다.
포인터가 아닌 보통의 변수에 말입니다. 변수에 값이 할당되지 않았다는 표시로 할당하는 값을 질문드린 겁니다.
본인 맞습니다.
인증샷
우헤헤헤... 로 대신합니다.
위에 적었잖습니까.. 0x00
위에 적었잖습니까.. 0x00
값이 없음을 나타내는 일반적인 방법은
값이 없음을 나타내는 일반적인 방법은 없습니다.
질문자께서도 알고 계신것 같지만 0을 넣으면 된다는 위 답변은 엉터리죠. "값 0" 과 "값 없음 0" 이 구분이 안되니까요.
해당하는 변수에서 사용되지 않는 값을 생각하여 사용하셔야 합니다.
면적처럼 음수가 될수 없는 경우에 -1을 사용한다거나, INT_MAX (0xFFFFFFFF) 을 사용한다거나,
템플릿처럼 일반화된 방법이 필요한 경우 상태를 나타내는 boolean 값을 별도로 사용하는 것도 고려해보셔야 합니다.
gilgil.net
allocateV(int ind, TT value) { myR[ind] = value; }1. 2번째 인자(TT value)를 pointer로 변경해서 pointer 값이 NULL인 경우 값이 없다고 판단.
2. TT 클래스에서 isClear()와 같은 method를 제공해서 isClear() return 값이 true인 경우 값이 없다고 판단.
디자인하기 나름이겠죠. ^^
www.gilgil.net
결론은
개별적으로 분석해서 설계하는 방법 외에는 없군요. 참 C++은 어렵네요. ㅜㅜ
본인 맞습니다.
인증샷
우헤헤헤... 로 대신합니다.
그래도 C++의 막강한 메모리 관리 능력 때문에라도
꼭 C++을 마스터해야겠습니다.
본인 맞습니다.
인증샷
우헤헤헤... 로 대신합니다.
헉.. c++의 막강한 메모리관리
헉.. c++의 막강한 메모리관리 능력...
python의 None의 개념을 찾으시는거보면 고수준언어와 비교하시는 것 같은데,
C++을 마스터해야하는 이유가 메모리 관리 능력???
차라리 java를 하시지..
C++의 메모리 관리 능력이라는게 잘 쓰면 C보다는 낫다고 할만한 수준입니다만,
new와 delete와 pointer를 충분히 쓰면서 메모리 관리 능력을 찾는건 좀 넌센스네요.
댓글 달기