呼呼,重载<<的有关问题。

呼呼,重载<<的问题。。求助!
我的程序的最后一部分重载<<的时候好像出现问题了!VC居然提示说不可以使用私有变量value,可是重载<<是已经设置成友元了啊!这是怎么回事啊?太奇怪了。。。。大虾帮忙啊!现在无法通过编译。。
#include <iostream>
#include <cstdlib>
#include <cstddef>
#include <cstring>
using namespace std;


class stringVar
{ public:
stringVar(int size);
stringVar();
stringVar(const char a[]);
stringVar(const stringVar& string_object);
~stringVar();
int length() const;
void input_line(istream& ins);
friend ostream& operator <<(ostream& outs,const stringVar& the_string);


private:
char* value;
int max_length;
};



stringVar::stringVar(int size):max_length(size)
{ value=new char[max_length+1];
value[0]='\0';
}

stringVar::stringVar():max_length(100)
{ value=new char[max_length+1];
value[0]='\0';
}

stringVar::stringVar(const char a[]):max_length(strlen(a))
{ value=new char[max_length+1];
strcpy(value,a);
}

stringVar::stringVar(const stringVar& string_object):max_length(string_object.length())
{ value=new char[max_length+1];
strcpy(value,string_object.value);
}

stringVar::~stringVar()
{ delete [] value;
}

int stringVar::length() const
{ return strlen(value);
}

void stringVar::input_line(istream& ins)
{ ins.getline(value,max_length+1);
}

ostream& operator << (ostream& outs,const stringVar& the_string)
{ outs<<the_string.value;
return outs;
}


int main()
{ stringVar a;
a.input_line(cin);
cout<<a;

return 0;
}

------解决方案--------------------
程序没问题~~
------解决方案--------------------
扔掉VC6.0吧
------解决方案--------------------
C/C++ code
#include <iostream>
#include <cstdlib>
#include <cstddef>
#include <cstring>
using namespace std;

class stringVar
{ 
public:
    stringVar(int size);
    stringVar();
    stringVar(const char a[]);
    stringVar(const stringVar& string_object);
    ~stringVar();
    int length() const;
    void input_line(istream& ins);
    friend ostream& operator <<(ostream& outs,const stringVar& the_string);
private:
    char* value;
    int max_length;
};

stringVar::stringVar(int size):max_length(size)
{ 
    value=new char[max_length+1];
    value[0]='\0';
}

stringVar::stringVar():max_length(100)
{ 
    value=new char[max_length+1];
    value[0]='\0';
}

stringVar::stringVar(const char a[]):max_length(strlen(a))
{ 
    value=new char[max_length+1];
    strcpy(value,a);
}

stringVar::stringVar(const stringVar& string_object):max_length(string_object.length())
{ 
    value=new char[max_length+1];
    strcpy(value,string_object.value);
}

stringVar::~stringVar()
{
    delete [] value;
}

int stringVar::length() const
{
    return strlen(value);
}

void stringVar::input_line(istream& ins)
{ 
    ins.getline(value,max_length+1);
}

ostream& operator << (ostream& outs,const stringVar& the_string)
{
    outs<<the_string.value;
    return outs;
}

int main()
{ 
    stringVar a;
    a.input_line(cin);
    cout<<a;
    system("pause");
    return 0;
}

------解决方案--------------------
没问题,你的vc6.0不行,装个sp6补丁吧。
用VS2008吧。
------解决方案--------------------
放到类内定义