Why the error

This is a discussion on Why the error within the C++ Programming forums, part of the General Programming Boards category; Hi im kinda new to c++ and I can't seem to fix this compile error. insert Code: char String::c_str() { ...

  1. #1
    Registered User
    Join Date
    Mar 2009
    Posts
    4

    Why the error

    Hi im kinda new to c++ and I can't seem to fix this compile error.
    insert
    Code:
     
    char String::c_str()
    {
       char* cs;
       cs  = new char[length+1];
       strcpy(cs,first);
       return cs;
    }
    I am trying to make a function that takes a String and converts it into a c-style string.
    I keep getting this error though " invalid conversion from 'char*' to 'char'"
    How come this happens and how can it be fixed.

    Thank you all who attempt to help.

  2. #2
    The larch
    Join Date
    May 2006
    Posts
    3,573
    Code:
    char String::c_str()
    {
       char* cs;
       cs  = new char[length+1];
       strcpy(cs,first);
       return cs;
    }
    There's your invalid conversion.

    The idea that a c_str function should allocate an unmanaged string buffer doesn't look good, though.

    More commonly this should look like:

    Code:
    const char* String::c_str() const
    {
       return first;
    }
    All the const's so that the user wouldn't be able to mess around with the internal buffer.

    If they now want to store that into a dynamically allocated char array, that's entirely up to them to do in the calling code.

    Otherwise, most often you'd use the c_str method like this:

    Code:
    String s("filename");
    std::ofstream fout(s.c_str());
    When done your way, that would be a memory leak.
    I might be wrong.

    Thank you, anon. You sure know how to recognize different types of trees from quite a long way away.
    Quoted more than 1000 times (I hope).

  3. #3
    Registered User whiteflags's Avatar
    Join Date
    Apr 2006
    Location
    United States
    Posts
    6,822
    Your return type should be char * for this function as that is the type of cs.

    Are you sure you want to return a copy like that? It could be hard to know when cs was deallocated. Make sure you don't leak memory in your string class!
    Quote Originally Posted by phantomotap
    Can you write code while blindfolded only with the blind covering your brain? Can you code while brainfolded?

  4. #4
    Registered User
    Join Date
    Mar 2009
    Posts
    4

    Works no problem

    Thank you both for the help. It is working fine now.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Getting an error with OpenGL: collect2: ld returned 1 exit status
    By Lorgon Jortle in forum C++ Programming
    Replies: 6
    Last Post: 05-08-2009, 08:18 PM
  2. An error is driving me nuts!
    By ulillillia in forum C Programming
    Replies: 5
    Last Post: 04-04-2009, 09:15 PM
  3. Making C DLL using MSVC++ 2005
    By chico1st in forum C Programming
    Replies: 26
    Last Post: 05-28-2008, 01:17 PM
  4. Connecting to a mysql server and querying problem
    By Diod in forum C++ Programming
    Replies: 8
    Last Post: 02-13-2006, 09:33 AM
  5. Couple C questions :)
    By Divx in forum C Programming
    Replies: 5
    Last Post: 01-28-2003, 12:10 AM

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21