关于C++调试 1 unsolved externals

来源:百度知道 编辑:UC知道 时间:2024/07/08 01:23:09
#include"iostream.h"
class MyClass
{
int m;
public:
MyClass(int i=0);
MyClass(MyClass &c);
void Set(int i);
void print();
~MyClass();
};
MyClass::MyClass(MyClass &c)
{
m=c.m;
cout<<"Copy-Initialization constructor called."<<endl;
}
void MyClass::Set(int i)
{
m=i;
}
void MyClass::print()
{
cout<<m<<endl;
}
MyClass::~MyClass()
{
cout<<"destructor called."<<endl;
}
int main()
{
MyClass a(5);
MyClass b(a);
cout<<"b.print=======>";
b.print();
return 0;
}

调试结果:编译时候没有错误,运行后,
--------------------Configuration: 20081110 - Win32 Debug--------------------
Linking...
01.obj : error LNK2001: unresolved external symbol "public: __thiscall MyClass::MyClass(int)" (??0MyClass@@QAE@H@Z)

这是改正后的代码:
#include"iostream.h"
class MyClass
{
int m;
public:
//MyClass(int i=0); //函数定义时,参数是不可以赋值的
MyClass(int i);
MyClass(MyClass &c);
void Set(int i);
void print();
~MyClass();
};
MyClass::MyClass(int i)//相应的构造函数必须加注实现部分(系统默认的 构造函数除外)
{
m=i;
}
MyClass::MyClass(MyClass &c)
{
m=c.m;
cout<<"Copy-Initialization constructor called."<<endl;
}
void MyClass::Set(int i)
{
m=i;
}
void MyClass::print()
{
cout<<m<<endl;
}
MyClass::~MyClass()
{
cout<<"destructor called."<<endl;
}
int main()
{
MyClass a(5);
MyClass b(a);
cout<<"b.print=======>";
b.print();
return 0;
}

产生这个问题的主要原因是因为你的构造函数没有实现,
MyClass(int i=0);
只有声明没有实现才会出现link错误的,不知道这样的回答满意