抽象类出现C++ILink32错误

C++ ILink32 error with abstract class

本文关键字:错误 C++ILink32 抽象类      更新时间:2023-10-16

我有一个名为LibItem的抽象类,还有一个从这个类派生的DVD类。

这是我的代码:

DVD.h:

//---------------------------------------------------------------------------
#ifndef DVDH
#define DVDH
class DVD : public LibItem
{
public:
    DVD(const std::string&, const std::string&, const std::string&, const std::string&, const std::string&, const std::string&, int, const std::string&, const std::string&, const std::string&);
    void setRunningTime(int RunningTimeDetails);
    int getRunningTime();
    void setDirector(const std::string&);
    std::string getDirector();
    void setStudio(const std::string&);
    std::string getStudio();
    void setProducer(const std::string&);
    std::string getProducer();
    void PrintDetails();
private:
    DVD();
    int RunningTime;
    std::string Director;
    std::string Studio;
    std::string Producer;
};

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

DVD.cpp:

//---------------------------------------------------------------------------
#pragma hdrstop
#include "DVD.h"
DVD::DVD(const std::string& setItemTitle, const std::string& setItemAuthor, const std::string& setItemReleaseDate, const std::string& setItemCopyright, const std::string& setItemGenre, const std::string& setItemStatus, int setItemRunningTime, const std::string& setItemDirector, const std::string& setItemStudio, const std::string& setItemProducer)
{
setDetails(setItemTitle, setItemAuthor, setItemReleaseDate, setItemCopyright, setItemGenre, setItemStatus);
setRunningTime(setItemRunningTime);
setDirector(setItemDirector);
setStudio(setItemStudio);
setProducer(setItemProducer);
}
void DVD::setRunningTime(int RunningTimeDetails)
{
RunningTime = RunningTimeDetails;
}
int DVD::getRunningTime()
{
return RunningTime;
}
void DVD::setDirector(const std::string& DirectorDetails)
{
Director = DirectorDetails;
}
std::string DVD::getDirector()
{
return Director;
}
void DVD::setStudio(const std::string& StudioDetails)
{
Studio = StudioDetails;
}
std::string DVD::getStudio()
{
return Studio;
}
void DVD::setProducer(const std::string& ProducerDetails)
{
Producer = ProducerDetails;
}
std::string DVD::getProducer()
{
return Producer;
}
void DVD::PrintDetails()
{
cout << "Title: " << getTitle() << endl;
cout << "Author: " << getAuthor() << endl;
cout << "Release Date: " << getReleaseDate() << endl;
cout << "Copyrite: " << getCopyright() << endl;
cout << "Genre: " << getGenre() << endl;
cout << "Status: " << getStatus() << endl;
cout << "Running Time: " << getRunningTime() << endl;
cout << "Director: " << getDirector() << endl;
cout << "Studio: " << getStudio() << endl;
cout << "Producer: " << getProducer() << endl;
}
//---------------------------------------------------------------------------
#pragma package(smart_init)

我得到这个错误:

[ILINK32错误]错误:无法解析的外部DVD::DVD(std::basic_string,std::分配器>&,std::basic_string,std:,分配器>&aamp;,std:;分配器>&ap;,std::basic_string,td::分配器>>,std:分配器>&)'被引用摘自H:\2012\TRIMESTER 2\IT6253-C++编程\评估\问题5\WIN32\DEBUG\问题5.OBJ

我能帮我纠正这个错误吗?

链接中缺少DVD.o。如果你发布你链接你的程序或你的Makefile文件的方式,我会告诉你在哪里以及如何添加它。

一般来说,假设您的程序由main.cpp文件组成,其中包括DVD.h以及其他头文件。我们还假设您使用以下命令编译(并链接)它:

g++ main.cpp -o myprogram

为了能够在你的程序中提供DVD机身,你需要做:

g++ main.cpp DVD.cpp -o myprogram

当然,如果您使用Makefile,它可能会有所不同,您可能会在链接myprogram代码的地方看到类似的内容:g++ main.o -o myprogram。在这种情况下,您需要找到在哪里构建main.o,并对DVD.o进行同样的操作。

我希望这会有所帮助。