C++的定义问题

来源:百度知道 编辑:UC知道 时间:2024/06/21 23:37:53
我在代码中这样写的
在ce.h中
struct gao{
int a;
void c();
};

在ce.cpp中
#include <iostream>
void gao::c(){
std::cout<<"sdfgs";
}

在ce1.cpp中
#include<iostream>
#include "ce.h"
void main(){
gao go={11};
go.c();}

编译出现错误

ce1.obj : error LNK2001: unresolved external symbol "public: void __thiscall gaogao::c(void)" (?c@gaogao@@QAEXXZ)
Debug/ce1.exe : fatal error LNK1120: 1 unresolved externals
执行 link.exe 时出错.

为什么呢???把函数c的定义写在头文件中这样就可以运行,为什么啊??

请教了,感谢!
先感谢梦轩闲骨的回答,但加了主头文件卫士,和在ce.cpp中加入#include"ce.h"(忙中出错忘了)后,还是没有解决问题哦

我用的是vc++ 6。0 编译没问题,但执行就不行了。这是个结构,应该不用构造函数吧

好不容易解决掉了,花了我这大菜鸟两天时间,原来是头文件方法有问题,把头文件的具体路径都写出来,用引号包括就行了,感谢各位了!!!!!!!

在C++中struct与class差不多,所以不是这个问题;在ce.cpp中也要加入#include"ce.h"。不过,在ce.h中也要加主头文件卫士哦,不然会出现重复引入的问题。
#ifndef ce_h
#define ce_h
struct gao{
int a;
void c();
};
#endif

我还没看出来,你没有定义有参的构造函数啊,不可以这样:gao go={11};
而且,如果有的话还要这样用:gao go(11);
哦,没事!大家互相帮助嘛!

在ce.cpp中 这个改一下
#include"ce.h" <iostream".h"> 好像是这样吧
不知道对不对.....

在ce.h中也要加主头文件
#ifndef ce_h
#define ce_h
struct gao{
int a;
void c();
};
#endif
大概就像他说得那样了 我也是个初学者...##

还有 不可以gao go={11};
好像要gao go(11); 这个样子吧

gao只是结构,不是类.不能用::域定义符呀.你把struct改为class.试试.

gao go={11};
不能这样负值。
梦轩闲骨说的也有道理,你需要增加ifndef这样宏,避免重复定义。