但是在main函数的文件编译是会出错,提示错误的OBJ文件啊什么乱七八糟一大堆
然后我只能把声明和定义都放在x.cpp里才正常……
30 个解决方案
#1
不会吧
贴出来,看看吧
贴出来,看看吧
#2
是不是没包含头文件
#3
肯定包含了头文件了
#4
放在另一个头文件中行呀,你肯定是没有包含它的头文件了
#5
用了模板吧,vc6你只能把定义和实现都写在头文件中
#6
应该是没有包含头文件吧
不可能啊
不可能啊
#7
除了摸板而外,这种情况不可能发生的!!
#8
恩,我估计也是头文件包含的错误,你可以先写个简单的程序,把头文件包含搞清楚:
比如,我有三个文件: main.cpp, CStudent.h, CStudent.cpp
main.cpp 是程序主函数,CStudent.h & CStudent.cpp 分别是类的定义和实现文件。
//--main.cpp----------------------------------------//
#include "CStudent.h"
void main()
{
CStudent A;
A.InputInfo("windz", 22);
A.ShowInfo();
}
//--CStudent.h-----------------------------------------------------------//
class CStudent
{
public:
void InputInfo(char *pname, int nAge);
void ShowInfo();
private:
char name[18];
int age;
};
//--CStudent.cpp-----------------------------------------------------------//
#include <iostream.h>
#include <string.h>
#include "CStudent.h"
void CStudent::InputInfo(char *pname, int nAge)
{
strcpy(name, pname);
age = nAge;
}
void CStudent::ShowInfo()
{
cout<<name<<"\n";
cout<<age<<endl;
}
比如,我有三个文件: main.cpp, CStudent.h, CStudent.cpp
main.cpp 是程序主函数,CStudent.h & CStudent.cpp 分别是类的定义和实现文件。
//--main.cpp----------------------------------------//
#include "CStudent.h"
void main()
{
CStudent A;
A.InputInfo("windz", 22);
A.ShowInfo();
}
//--CStudent.h-----------------------------------------------------------//
class CStudent
{
public:
void InputInfo(char *pname, int nAge);
void ShowInfo();
private:
char name[18];
int age;
};
//--CStudent.cpp-----------------------------------------------------------//
#include <iostream.h>
#include <string.h>
#include "CStudent.h"
void CStudent::InputInfo(char *pname, int nAge)
{
strcpy(name, pname);
age = nAge;
}
void CStudent::ShowInfo()
{
cout<<name<<"\n";
cout<<age<<endl;
}
#9
奇怪,现在又可以了
#10
又有新的问题了,如果以分开存放的方式,若有构造函数的话就会出错,提示为:
Unresolved external "x:x()" referenced from X:\xxx.obj
Unresolved external "x:x()" referenced from X:\xxx.obj
#11
难道一个类的构造函数的定义一定要和声明放在同一个文件中吗?
#12
Unresolved external "x:x()" referenced from X:\xxx.obj
出现这种问题的一种可能是你在CPP文件里面是这样写的:
x()
{}
而没有这样写:
x:x()
{}
猜测而已
出现这种问题的一种可能是你在CPP文件里面是这样写的:
x()
{}
而没有这样写:
x:x()
{}
猜测而已
#13
//Dest.h
class Desk
{
public:
Desk();
protected:
int a
};
//Desk.cpp
#include "Desk.h"
Desk::Desk()
{
a=10;
cout<<"a"<<a<<endl;
}
//Deskmain.cpp
#include <iostream.h>
#include "Desk.h"
void fn()
{
Desk d[5];
}
void main()
{
fn();
}
class Desk
{
public:
Desk();
protected:
int a
};
//Desk.cpp
#include "Desk.h"
Desk::Desk()
{
a=10;
cout<<"a"<<a<<endl;
}
//Deskmain.cpp
#include <iostream.h>
#include "Desk.h"
void fn()
{
Desk d[5];
}
void main()
{
fn();
}
#14
第一行应该是//Desk.h,笔误
#15
我这里可以通过,你把xxx.obj删了重新编译看看,也许你的设置有问题!
#16
我的系统Windows XP+vc.net2003
#17
可能你的这个程序中的其他地方包含了这个头文件,导致重复的原因!
#18
我另外试了几个程序,结果都一样啊。你们用的是什么编译器?
我用Borland C++BUILDER COMMAND LINE TOOLS 5.5和Digital Mars C/C++ Compilers都一样会出错,就是构造函数会这样,别的就没关系
我用Borland C++BUILDER COMMAND LINE TOOLS 5.5和Digital Mars C/C++ Compilers都一样会出错,就是构造函数会这样,别的就没关系
#19
为什么我用这两个命令行方式的编译器别的都没问题,只有构造函数会出现这样的问题?
#20
早上装了VC6结果也一样,在Compile时没问题,Builder时就出错
Linking...
Tdate_main.obj : error LNK2001: unresolved external symbol "public: __thiscall Tdate::Tdate(int,int,int)" (??0Tdate@@QAE@HHH@Z)
Linking...
Tdate_main.obj : error LNK2001: unresolved external symbol "public: __thiscall Tdate::Tdate(int,int,int)" (??0Tdate@@QAE@HHH@Z)
#21
呵呵!你没有包含啊!
#22
不会吧,我一向是这样做的.类声明作一个头文件,而实现作为一个.cpp文件,还从来没这样过, 不会是误包含了.cpp的文件啊,
随便猜,
随便猜,
#23
没有啊,我粘下来,运行了一次,没那事啊,只出现了两个错误啊,一个是Desk.cpp中少包含了一个#include <iostream.h>
还有就是一个可能是作者在
int a 后少打了一个分号而已,
运行结果也如果所料,
如下:
a10
a10
a10
a10
a10
Press any key to continue
还有就是一个可能是作者在
int a 后少打了一个分号而已,
运行结果也如果所料,
如下:
a10
a10
a10
a10
a10
Press any key to continue
#24
什么没有包含?
#25
你是分开放在两个文件里吗
#26
对了,我是在XP下运行的,编译器是visual c++ 6.0
你试试了还有错误吗?
真怪啊
你试试了还有错误吗?
真怪啊
#27
是啊,一共是三个文件,两个源文件,一个头文件的
#28
用vs.net 把!
他对C++标准支持达到98%
他对C++标准支持达到98%
#29
我用vs.net成功了!
#30
还是会出错啊,构造函数的声明和定义放倒一个文件里就没问题,分开放就不行了
#1
不会吧
贴出来,看看吧
贴出来,看看吧
#2
是不是没包含头文件
#3
肯定包含了头文件了
#4
放在另一个头文件中行呀,你肯定是没有包含它的头文件了
#5
用了模板吧,vc6你只能把定义和实现都写在头文件中
#6
应该是没有包含头文件吧
不可能啊
不可能啊
#7
除了摸板而外,这种情况不可能发生的!!
#8
恩,我估计也是头文件包含的错误,你可以先写个简单的程序,把头文件包含搞清楚:
比如,我有三个文件: main.cpp, CStudent.h, CStudent.cpp
main.cpp 是程序主函数,CStudent.h & CStudent.cpp 分别是类的定义和实现文件。
//--main.cpp----------------------------------------//
#include "CStudent.h"
void main()
{
CStudent A;
A.InputInfo("windz", 22);
A.ShowInfo();
}
//--CStudent.h-----------------------------------------------------------//
class CStudent
{
public:
void InputInfo(char *pname, int nAge);
void ShowInfo();
private:
char name[18];
int age;
};
//--CStudent.cpp-----------------------------------------------------------//
#include <iostream.h>
#include <string.h>
#include "CStudent.h"
void CStudent::InputInfo(char *pname, int nAge)
{
strcpy(name, pname);
age = nAge;
}
void CStudent::ShowInfo()
{
cout<<name<<"\n";
cout<<age<<endl;
}
比如,我有三个文件: main.cpp, CStudent.h, CStudent.cpp
main.cpp 是程序主函数,CStudent.h & CStudent.cpp 分别是类的定义和实现文件。
//--main.cpp----------------------------------------//
#include "CStudent.h"
void main()
{
CStudent A;
A.InputInfo("windz", 22);
A.ShowInfo();
}
//--CStudent.h-----------------------------------------------------------//
class CStudent
{
public:
void InputInfo(char *pname, int nAge);
void ShowInfo();
private:
char name[18];
int age;
};
//--CStudent.cpp-----------------------------------------------------------//
#include <iostream.h>
#include <string.h>
#include "CStudent.h"
void CStudent::InputInfo(char *pname, int nAge)
{
strcpy(name, pname);
age = nAge;
}
void CStudent::ShowInfo()
{
cout<<name<<"\n";
cout<<age<<endl;
}
#9
奇怪,现在又可以了
#10
又有新的问题了,如果以分开存放的方式,若有构造函数的话就会出错,提示为:
Unresolved external "x:x()" referenced from X:\xxx.obj
Unresolved external "x:x()" referenced from X:\xxx.obj
#11
难道一个类的构造函数的定义一定要和声明放在同一个文件中吗?
#12
Unresolved external "x:x()" referenced from X:\xxx.obj
出现这种问题的一种可能是你在CPP文件里面是这样写的:
x()
{}
而没有这样写:
x:x()
{}
猜测而已
出现这种问题的一种可能是你在CPP文件里面是这样写的:
x()
{}
而没有这样写:
x:x()
{}
猜测而已
#13
//Dest.h
class Desk
{
public:
Desk();
protected:
int a
};
//Desk.cpp
#include "Desk.h"
Desk::Desk()
{
a=10;
cout<<"a"<<a<<endl;
}
//Deskmain.cpp
#include <iostream.h>
#include "Desk.h"
void fn()
{
Desk d[5];
}
void main()
{
fn();
}
class Desk
{
public:
Desk();
protected:
int a
};
//Desk.cpp
#include "Desk.h"
Desk::Desk()
{
a=10;
cout<<"a"<<a<<endl;
}
//Deskmain.cpp
#include <iostream.h>
#include "Desk.h"
void fn()
{
Desk d[5];
}
void main()
{
fn();
}
#14
第一行应该是//Desk.h,笔误
#15
我这里可以通过,你把xxx.obj删了重新编译看看,也许你的设置有问题!
#16
我的系统Windows XP+vc.net2003
#17
可能你的这个程序中的其他地方包含了这个头文件,导致重复的原因!
#18
我另外试了几个程序,结果都一样啊。你们用的是什么编译器?
我用Borland C++BUILDER COMMAND LINE TOOLS 5.5和Digital Mars C/C++ Compilers都一样会出错,就是构造函数会这样,别的就没关系
我用Borland C++BUILDER COMMAND LINE TOOLS 5.5和Digital Mars C/C++ Compilers都一样会出错,就是构造函数会这样,别的就没关系
#19
为什么我用这两个命令行方式的编译器别的都没问题,只有构造函数会出现这样的问题?
#20
早上装了VC6结果也一样,在Compile时没问题,Builder时就出错
Linking...
Tdate_main.obj : error LNK2001: unresolved external symbol "public: __thiscall Tdate::Tdate(int,int,int)" (??0Tdate@@QAE@HHH@Z)
Linking...
Tdate_main.obj : error LNK2001: unresolved external symbol "public: __thiscall Tdate::Tdate(int,int,int)" (??0Tdate@@QAE@HHH@Z)
#21
呵呵!你没有包含啊!
#22
不会吧,我一向是这样做的.类声明作一个头文件,而实现作为一个.cpp文件,还从来没这样过, 不会是误包含了.cpp的文件啊,
随便猜,
随便猜,
#23
没有啊,我粘下来,运行了一次,没那事啊,只出现了两个错误啊,一个是Desk.cpp中少包含了一个#include <iostream.h>
还有就是一个可能是作者在
int a 后少打了一个分号而已,
运行结果也如果所料,
如下:
a10
a10
a10
a10
a10
Press any key to continue
还有就是一个可能是作者在
int a 后少打了一个分号而已,
运行结果也如果所料,
如下:
a10
a10
a10
a10
a10
Press any key to continue
#24
什么没有包含?
#25
你是分开放在两个文件里吗
#26
对了,我是在XP下运行的,编译器是visual c++ 6.0
你试试了还有错误吗?
真怪啊
你试试了还有错误吗?
真怪啊
#27
是啊,一共是三个文件,两个源文件,一个头文件的
#28
用vs.net 把!
他对C++标准支持达到98%
他对C++标准支持达到98%
#29
我用vs.net成功了!
#30
还是会出错啊,构造函数的声明和定义放倒一个文件里就没问题,分开放就不行了