|
우선 클래스 이름을 cstring으로 바꾸고 아래와 같이 해보세요.
그리고 한 가지 덧붙이자면 for문의 조건절과 그 다음절에 함수를 사용하지 않는 것이 좋습니다.
아래 보면 j<rhs.getlen();가 있는데 rhs.getlen()은 for문 블럭 내부코드들을 실행시키기 직전 for문 블럭의 코드들을 계속 실행해야 하는지 검사하기 위해 매회 실행되므로 논리상 꼭 필요하지 않다면 사용하지 마시기 바랍니다.
논리상 꼭 필요한 경우란 for문을 돌 때 해당 함수 호출이 for문 조건절이나 블럭내부의 코드 실행 결과에 영향을 미치는 원인행위를 하거나 영향을 미치는 결과를 받아올 때입니다.
지금은 그러한 경우가 아닙니다.
unsigned short rhslen = rhs.getlen();
for(unsigned short j=0 ;j<rhslen ;j++,i++)
또는
for(unsigned short j=0 ,rhslen=rhs.getlen() ;j<rhslen ;j++,i++)
위와같이 하는게 좋습니다.
cstring cstring::operator+(const cstring &rhs)
{
unsigned short totallen=itslen+rhs.getlen();
cstring temp(totallen);
unsigned short i;
for(i=0;i<itslen;i++)
temp[i]=itsstring[i]; //rhs[i];
for(unsigned short j=0;j<rhs.getlen();j++,i++)
temp[i]=rhs[j];//[i-itslen];
temp[totallen]='\0';
return temp;
}
void cstring::operator+=(const cstring &rhs)
{
unsigned short rhslen=rhs.getlen();
unsigned short totallen=itslen+rhslen;
cstring temp(totallen);
unsigned short i;
for(i=0;i<itslen;i++)
temp[i]=itsstring[i];
for(unsigned short j=0;j<rhs.getlen();j++,i++)
temp[i]=rhs[j];//i-itslen];
temp[totallen]='\0';
*this=temp;
}
고민 님이 쓰신 글 :
: 문자열 클래스를 정의하고 연산자 재정의 를 이용한 클래스를 설계한 것인데요..
:
: 무슨 이유 때문인지 컴파일이 돼지 않습니다.
:
: 책에 있는 그대로를 컴파일 하려한건데.. 에러 메세지가 나오면서 컴파일이 돼지 않습니다.
:
: 아무리 봐도 ... 뭐가 틀린건지 잘 모를듯...
:
: visual c++ 6.0 에서 컴파일을 시켰는데.. 모든 에러 메세지는 동일하게
:
: ambiguous symbol 이라고 나옵니다... 에메모호한 심볼이라구...
:
: 소스가 조금 길어 파일로 첨부 합니다... 도움 부탁드립니다.
:
|