Em đã sửa lại code rồi mà vẫn bị lỗi tùm lum.
Em vẫn thắc mắc:
- Cách khai báo để lấy ra mssv, name, next của 1 object?
- Tạu sao phải có const ở con trỏ? Tại sao phải dùng reference cho name?
- Tại sao phải dùng currentsv-> createname(i)? Trong clip thì không cần viết như vậy. Mà lại không thấy được hàm createname :((
- Có cần phải declare lại các biến bên cpp ko? Tại sao cứ báo lỗi hoài T.T
Lỗi hiện tại: non-member function ‘int mssv()’ cannot have cv-qualifier.
Em cảm ơn.
Code mới đây ạ:
sinhvien.h:
ifndef SINHVIEN_H
define SINHVIEN_H
include
class sinhvien
{
public:
sinhvien(int mssv,const std::string &name,sinhvien*const next=0);
std::string createname(int n);
void setNext(sinhvien*const other);
int mssv();
std::string name();
sinhvien*next();
protected:
private:
int mssv_;
std::string name_;
sinhvien* next_;
};
endif // SINHVIEN_H
sinhvien.cpp
include "sinhvien.h"
include
sinhvien::sinhvien(int mssv,const std::string &name,sinhvien*const next)
{
mssv_=mssv;
name_=name;
next_=next;
}
int mssv()const
{
return mssv_;
}
string name() const
{
return name_;
}
sinhvien*next() const
{
return next_;
}
void setnext(sinhvien*const other)
{
next_=other;
}
string createname(int n)
{
return "sv"+"n";
}
sinhvien::~sinhvien()
{
next_=0;
}
main.cpp:
include
include
include "sinhvien.h"
int main()
{
sinhvien*first=new sinhvien(1,"sv 1",0);
sinhvien*currentsv=first;
for(int i=2;i<5;i++)
{
std::string name=currentsv->createname(i);
sinhvien*newSV=(i,name,0);
currentsv->setNext(newSV);
currentsv=newSV;
}
return 0;
}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?