-3

这是我的课程代码:

class LibItem
{
public:
    virtual void PrintDetails() = 0;
    void setDetails(string setItemTitle, string setItemAuthor, string setItemReleaseDate, string setItemCopyright, string setItemGenre, string setItemStatus)
    {
        Title = setItemTitle;
        Author = setItemAuthor;
        ReleaseDate = setItemReleaseDate;
        Copyright = setItemCopyright;
        Genre = setItemGenre;
        Status = setItemStatus;
    }
    void setTitle(string TitleName)
    {
        Title = TitleName;
    }
    string getTitle()
    {
        return Title;
    }
    void setReleaseDate(string date)
    {
        ReleaseDate = date;
    }
    string getReleaseDate()
    {
        return ReleaseDate;
    }
    void setAuthor(string AuthorName)
    {
        Author = AuthorName;
    }
    string getAuthor()
    {
        return Author;
    }
    void setCopyright(string CopyrightDetails)
    {
        Copyright = CopyrightDetails;
    }
    string getCopyright()
    {
        return Copyright;
    }
    void setGenre(string GenreDetails)
    {
        Genre = GenreDetails;
    }
    string getGenre()
    {
        return Genre;
    }
    void setStatus(string StatusDetails)
    {
        Status = StatusDetails;
    }
    string getStatus()
    {
        return Status;
    }
private:
    string Title;
    string ReleaseDate;
    string Author;
    string Copyright;
    string Genre;
    string Status;
};

我想把它放到一个 .h 文件和一个 .cpp 文件中。下面的代码正确吗?

LibItem.cpp:

//---------------------------------------------------------------------------

#pragma hdrstop

#include "LibItem.h"

virtual void LibItem::PrintDetails() = 0;
void LibItem::setDetails(string setItemTitle, string setItemAuthor, string setItemReleaseDate, string setItemCopyright, string setItemGenre, string setItemStatus)
{
Title = setItemTitle;
Author = setItemAuthor;
ReleaseDate = setItemReleaseDate;
Copyright = setItemCopyright;
Genre = setItemGenre;
Status = setItemStatus;
}
void LibItem::setTitle(string TitleName)
{
Title = TitleName;
}
string LibItem::getTitle()
{
return Title;
}
void LibItem::setReleaseDate(string date)
{
ReleaseDate = date;
}
string LibItem::getReleaseDate()
{
return ReleaseDate;
}
void LibItem::setAuthor(string AuthorName)
{
Author = AuthorName;
}
string LibItem::getAuthor()
{
return Author;
}
void LibItem::setCopyright(string CopyrightDetails)
{
Copyright = CopyrightDetails;
}
string LibItem::getCopyright()
{
return Copyright;
}
void LibItem::setGenre(string GenreDetails)
{
Genre = GenreDetails;
}
string LibItem::getGenre()
{
return Genre;
}
void LibItem::setStatus(string StatusDetails)
{
Status = StatusDetails;
}
string LibItem::getStatus()
{
return Status;
}
};

//---------------------------------------------------------------------------
#pragma package(smart_init)

LibItem.h

//---------------------------------------------------------------------------

#ifndef LibItemH
#define LibItemH

class LibItem
{
public:
    virtual void PrintDetails();
    void setDetails(string, string, string, string, string, string);
    void setTitle(string);
    void setReleaseDate(string);
    string getReleaseDate();
    void setAuthor(string);
    string getAuthor();
    void setCopyright(string);
    string getCopyright();
    void setGenre(string);
    string getGenre();
    void setStatus(string);
    string getStatus();
private:
    string Title;
    string ReleaseDate;
    string Author;
    string Copyright;
    string Genre;
    string Status;
};


//---------------------------------------------------------------------------
#endif

接下来,如果我想在 main 函数中使用这个 .h 和 .cpp 文件,需要什么代码才能做到这一点?需要哪些包含语句?

4

1 回答 1

2

不正确:

virtual void LibItem::PrintDetails() = 0;

=0应该在类定义中(在标题中)。

要使用该类,您需要#include "LibItem.h".

此外,在标题中:

#include <string>

并将出现的 替换stringstd::string

string参数应该通过引用传递:

void setReleaseDate(const string& date)

代替

void setReleaseDate(string date)
于 2012-08-29T11:40:52.590 回答