|
안녕하세요
소스를 가져다 컴파일 하니까
현재 님께서 선언하신 string 하고 std::string하고 헤깔려서 컴파일 못하겠다고
하더군요..
웬만하면 클래스 이름을 다른걸로 바꾸시는게 가장 좋을 듯하고요..
정 바꾸시기 싫으시면 Scope 연산자로 현재 이곳의 string이다라고 알려주시는게
좋겠군요..
그러니까 이렇게 수정해보셔요..
에러나는 곳의 string ---> ::string이런식으로 바꾸어주시면 컴파일 잘 될것입니다..
그리고 밑에 부분에 for loop 안에 i 변수 선언하신것도 밖으로 빼주셔야 컴파일
됩니다..
그럼 즐거운 하루 되십시요..
이녀기 님이 쓰신 글 :
: 바루 이코듭니당^^
: 허접한 제가 보니.. 어째 좀 이상한 곳이 몇군데 있군요.. 책그대룬데( teach yourself c++
: in 21 days. 제시 리버티..)
: 제가 고칠대루 고쳐 봐두 안되길래^^ 원문 그대루 올려 봤습니다..
: 고수님 도와주세요.. 주석정도만 달아주셔도 .. 정말 감사할것 같은데..^^
: 어쩜 좋아요.. 이게 걸려서 담 장으루 못넘어 가구 있습니다..
: 고수님 도와주세요.
: 특히 조 아래 상수 string & 를 인수로 가지는 생성자가..ㅠㅠ
: #include<iostream.h>
: #include<string.h>
:
:
: class string
: {
: public:
: string();
: string(const char * const);
: string(const string &);
: ~string();
:
: char & operator [](unsigned short offset);
: char operator [] (unsigned short offset) const;
: string operator + (const string&);
: void operator +=(const string&);
: string & operator = (const string &);
:
: unsigned short getlen() const {return itslen;}
: const char * getstring() const {return itsstring;}
:
: private:
: string (unsigned short);
: char * itsstring;
: unsigned short itslen;
: };
:
: string::string()
: {
: itsstring = new char[1];
: itsstring[0] = '\0';
: itslen=0;
: }
:
: string::string(unsigned short len)
: {
: itsstring = new char[len+1];
: for (int i=0; i<=len ;i++)
: itsstring[i] = '\0';
: itslen=len;
: }
:
: string::string(const char * const cstring)
: {
: itslen = strlen(cstring);
: itsstring=new char[itslen+1];
: for(unsigned short i=0;i<=itslen;i++)
: itsstring[i]=cstring[i];
: itsstring[itslen]='\0';
: }
:
: string::string (const string & rhs)
: {
: itslen = rhs.getlen();
: itsstring=new char[itslen+1];
: for (unsigned short i=0; i<=itslen;i++)
: itsstring[i]=rhs[i];
: itsstring[itslen] = '\0';
: }
:
: string::~string()
: {
: delete [] itsstring;
: itslen=0;
: }
:
: string & string::operator = (const string & rhs)
: {
: if (this==&rhs)
: return *this;
: delete []itsstring;
: itslen=rhs.getlen();
: itsstring = new char [itslen+1];
: for (unsigned short i=0;i<=itslen;i++)
: itsstring[i]=rhs[i];
: itsstring[itslen]='\0';
: return *this;
: }
:
: char & string::operator[] (unsigned short offset)
: {
: if (offset>itslen)
: return itsstring[itslen-1];
: else
: return itsstring[offset];
: }
:
: char string::operator [](unsigned short offset) const
: {
: if (offset>itslen)
: return itsstring[itslen-1];
: else
: return itsstring[offset];
: }
:
: string string::operator +( const string & rhs)
: {
: unsigned short totallen = itslen+rhs.getlen();
: string temp(totallen);
: for(unsigned short i=0; i<=itslen;i++)
: temp[i] = itsstring[i];
: for(unsigned short j=0;j<rhs.getlen();j++,i++)
: temp[i]=rhs[j];
: temp [totallen]='\0';
: return temp;
: }
:
: void string::operator +=(const string &rhs)
: {
: unsigned short rhslen = rhs.getlen();
: unsigned short totallen= itslen+ rhs.getlen();
: string temp(totallen);
: for (unsigned short i=0;i<itslen;i++)
: temp[i]=itsstring[i];
: for (unsigned short j=0;j<rhs.getlen();j++,i++)
: temp[i]=rhs[i-itslen];
: temp[totallen]='\0';
: *this=temp;
: }
:
: int main()
: {
: string s1("initial test");
: cout<<"s1:\t"<<s1.getstring()<<endl;
:
: char *temp ="hello world";
: s1=temp;
: cout<<"s1:\t"<<s1.getstring()<<endl;
:
: char temptwo[20];
: strcpy(temptwo,"nice to be here!");
: s1 +=temptwo;
: cout<<"temptwo\t"<<temptwo<<endl;
: cout<<"s1\t"<<s1.getstring()<<endl;
:
: cout<<"s1[4]"<<s1[4]<<endl;
: s1[4]='x';
: cout<<"s1:\t"<<s1.getstring()<<endl;
:
: cout<<"s1[999]\t"<<s1[999]<<endl;
:
: string s2("another string");
: string s3;
: s3=s1+s2;
: cout <<"s3:\t"<<s3.getstring()<<endl;
:
: string s4;
: s4="why does this this work?";
: cout<<"s4\t"<<s4.getstring()<<endl;
:
: return 0;
: }
:
|