liyuanjun 发表于 2016-8-12 22:12:30

关于类声明和成员函数定义的分离

//student.h
#include<string>
using namespace std;
class student
{
public:
    void set_in();
    void display();
private:
    int num;
    string name;
    char sex;
};
//student.cpp
#include<iostream>
#include"student.h"
void student::set_in()
{
    cin>>num>>name>>sex;
}
void student::display()
{
    cout<<num<<name<<sex<<endl;
}


main.cpp
#include <iostream>
#include"student.h"

using namespace std;

int main()
{
    class student s;
    s.set_in();
    s.display();
    return 0;
}
照着C++课本学类声明与成员函数定义的分离,结果编译一直出错,请问哪位大神知道能否解答一下??用的软件是code blocks,


错误显示:undefined reference to 'student::set_in()'
                undefined reference to 'student::display()'

innerpeace帅帅 发表于 2016-8-12 22:12:31

#include<iostream>
#include<string>
using namespace std;
class student
{
public:
        void set_in();
        void display();
private:
        int num;
        string name;
        char sex;
};



#include<iostream>
#include"Header.h"
void student::set_in()
{
        cin >> num >> name >> sex;
}
void student::display()
{
        cout << num << name << sex << endl;
}

#include <iostream>
#include"Header.h"

using namespace std;

int main()
{
        class student s;
        s.set_in();
        s.display();
        return 0;
}

Krant5 发表于 2016-8-13 23:59:42

我编了一点问题都没,你怎么弄的

liyuanjun 发表于 2016-8-14 09:55:01

Krant5 发表于 2016-8-13 23:59
我编了一点问题都没,你怎么弄的

请问你用的这个软件叫什么??

Krant5 发表于 2016-8-14 10:48:36

本帖最后由 Krant5 于 2016-8-14 10:53 编辑

liyuanjun 发表于 2016-8-14 09:55
请问你用的这个软件叫什么??

DEV-C 其实跟软件没关系吧,我用codeblock一样能编出来,你说你到底怎么操作的哦

liyuanjun 发表于 2016-8-14 14:59:49

Krant5 发表于 2016-8-14 10:48
DEV-C 其实跟软件没关系吧,我用codeblock一样能编出来,你说你到底怎么操作的哦

我就是这样操作的,我用别的软件运行正常,可能是我软件的原因吧,还是很谢谢你!!

千亩计者 发表于 2016-8-15 13:45:36

你在代码最后面加上
void print(struct student* head)
{
        printf("num=%d,score=%f\n",head.num,head.score);
}

happy_ltq 发表于 2016-8-18 14:52:41

可以先将报错的英文翻译成中文,然后再解决问题

visianlee 发表于 2016-8-23 20:27:41

厉害

1366627538 发表于 2016-9-2 09:01:17

在student.h问下的最上面加一句#pragma once 试一试,我估计是编译查到你的文件里面包含了多个一样的头文件,重复包含可能会使编译

器跳过你的student.cpp的文件。

(还有建议你把所有的头文件声明都放在.h文件里,类实现文件只需要包含以下.h文件就OK了)

iszhuangsha 发表于 2016-9-2 21:33:45

头文件少了#include<upstream>
另外,主程序中定义类对象时,不需要再加class.
程序看了 没问题啊。再编译试试。

Damn_it 发表于 2016-11-21 21:29:56

你类中的函数定义在哪????????
这个错误提示,通常是只有函数名, 但没有函数定义{:10_254:}

jamespp 发表于 2016-12-14 20:16:07

没有问题呀

jamespp 发表于 2016-12-14 20:16:40

你怎么搞的
页: [1]
查看完整版本: 关于类声明和成员函数定义的分离