自己定义了String类 头文件在String.h 类的定义String.cpp main所在的文件是 main_function.cpp 为什么在VC2005下运行出错 提示
无法解析的外部符号 "public: __thiscall String::String(class String const &)" (??0String@@QAE@ABV0@@Z),该符号在函数 _main 中被引用
/* String.h */
#ifndef STRING_H
#define STRING_H
#include<string>
#include <iostream>
using std::istream;
using std::ostream;
using std::cout;
using std::cin;
class String{
friend ostream& operator<< (ostream& ,const String&);
public:
String(const char* str = NULL);
String(const String&);
~String();
String& operator=(const char*);
String& operator=(const String&);
private:
void copy(const char* str);
char* c_ptr;
};
#endif
/* String.cpp */
#include "String.h"
void String::copy(const char* str)
{
if(str){
char* pre_ptr = c_ptr;
c_ptr = new char[strlen(str)+1];
if(c_ptr)
strcpy(c_ptr,str);
delete[] pre_ptr;
}
else
c_ptr = 0;
}
inline String::String(const char* str)
{
copy(str);
}
inline String::String(const String& rhs)
{
copy(rhs.c_ptr);
}
inline String::~String()
{
delete[] c_ptr;
}
String& String::operator=(const char* str)
{
if(c_ptr != str){
copy(str);
}
return *this;
}
String& String::operator =(const String &rhs)
{
if(this != &rhs)
{
copy(rhs.c_ptr);
}
return *this;
}
ostream& operator<<(ostream& out, const String& rhs)
{
out<<rhs.c_ptr;
return out;
}
/* main_function.cpp */
#include "String.h"
using std::cout;
using std::cin;
using std::endl;
int main()
{
String _str1 = "atom";
String _str2 = _str1;
String _str3;
cout<<_str1<<" "<<_str2<<" "<<_str3<<endl;
_str2 = "ballsaint";
_str3 = _str1;
cout<<_str1<<" "<<_str2<<" "<<_str3<<endl;
}