main 函数中无法解析 类的构造和析构函数

atom210 2009-05-21 02:17:46
自己定义了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;
}

...全文
129 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧