菜鸟请教简单c++问题,十分感谢!

编译器显示:undifined reference to ’setmessage()‘
请问是为什么怎么改?感谢!!

#include
using namespace std;
#include
#define N 10
int i=0;

void setmessage();
//void showcourse();
//void choosecourse();
//void save();

void menu()//一级菜单
{
cout< cout cout cout cout cout cout cout }
//int main()
void domenu()
{
menu();
int choose1;
cin>>choose1;
switch(choose1)
{
case 1:setmessage();break;
//case 2:showcourse();break;
//case 3:choosecourse();break;
//case 4:save();break;
case 0:break;
default:break;
}

}

class course
{
public:
course(){}
void setmessage();
private:
string cname;
int cscore,cnum;
};
void course:: setmessage()
{
int j1=1;
while(j1=1)
{
cout<<"课程编号:"< cin>>cnum;
cout<<"课程名称:"< cin>>cname;
cout<<"课程学分:"< cin>>cscore;
i++;
cout<<"如果停止录入请按0,继续录入请按1"< cin>>j1;
}
}
int main()
{
domenu();
course c[N];
c[i].setmessage();
return 0;
}

编译器显示:undifined reference to ’setmessage()‘
请问是为什么怎么改?感谢!!

8个回答

你最上面的函数 void setmessage(); 没有实现

WSunny111
WSunny111 去掉还是不行。。
2 年多之前 回复

你外部的函数setmessage你只是定义了没有实现吗,肯定报这个错误

WSunny111
WSunny111 去掉还是不行。。
2 年多之前 回复

你下次要贴程序,还是截图或者用代码格式贴出来,你这样看起来很累。。

WSunny111
WSunny111 好的,谢谢
2 年多之前 回复

报 引用 函数setmessage() 未定义;
要么写完整这个函数再调;
要么不要调用这个函数,程序中用到setmessage()的地方都注释或删掉;

楼上说的对,你只是定义了这个函数setmessage()

void setmessage();表示我要使用这个函数,
setmessage(){
I say hello world;//这是这个函数要做的事
}

qq_34309305
75闪光雷 回复WSunny111: 你把void setmessage();的void去掉 应该就可以了
2 年多之前 回复
WSunny111
WSunny111 我写了函数要做什么事情了啊,在main函数上面
2 年多之前 回复

我也是个菜鸟,我感觉你这个定义了两个setmessage函数吧,
一个定义域在这个文件中,一个在course中(我不清楚这样会不会起冲突),
然后你domune函数中调用的是定义域为这个文件的函数,
但是这个函数你没有告诉编译器它是干嘛的,所以它报错。
说直白点吧你那个domune函数中的setmessage没有说它是干嘛的,只是定义了而已,
你下面course中的setmessage函数定义了,这样不会起冲突?

setmessage只有函数声明,没有函数实现

domenu()中调用的setmessage是没有实现的。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问