I'm having some difficulty reproducing an example program of Object-Oriented Programming Using C++ described in "Encapsulation and Type Extensibility."
For simplicity's sake, I've cut out most of the code to focus on the specific error at hand:
#include <iostream> // Access standard IO library
#include <string> //Access type 'string'
using namespace std; //Use standard library namespace
const int max_length = 255;
class my_string {
      public:
             void assign(const char* st);
             int length() const { return len; }
             void print() const
                  { cout << s << "\nLength: " << len << endl; }
      private:
              char s[max_length];
              int len;
              };      
int main()
{
    my_string one;
    one.assign("I'm sorry Dave, I'm afraid I can't do that.");
    one.print();
    system("PAUSE");
}
When I try to compile, I get the error message:
[Linker error] undefined reference to 'my_string::assign(char const*)'
I'm not sure what I'm doing wrong. My best guess is that assign is incorrectly defined, since the main() block seems fine.
Edit:
The complete example as written in the book is:
In file string1.cpp
const int max_len = 255;
class my_string {
      public:
             void assign(const char* st);
             int length() const { return len; }
             void print() const
                  { cout << s << "\nLength: " << len << endl; }
      private:
              char s[max_length];
              int len;
              };      
int main()
{
    my_string one, two;
    char three[40] = {"My name is Charles Babbage."};
    one.assign("My name is Alan Turing.");
    two.assign(three);
    cout << three;
    cout << "\nLength: " << strlen(three) << endl;
    if (one.length() <= two.length())
        one.print();
    else
        two.print();
}
 
    