编辑:显然问题没有明确表达.我遇到的问题是,当在头文件中定义析构函数时,它会被添加到多个.obj文件中并且链接器会抱怨.实际问题是:
当我将析构函数添加到DLL项目中的CPP文件并使用动态加载的dll和接口头文件时,基本析构函数是否仍然被调用以防止内存泄漏?
我正在使用MSVC 10.0并有一个实现接口的DLL项目.该接口是一个抽象(纯虚拟)基类.这个想法是标题用于动态加载库.因此,我使用了一个纯虚拟析构函数来确保调用基类中的析构函数.以下是解释此问题的示例代码:
//ISplitter.h
#pragma once
struct param {
int something;
}
class ISplitter {
public:
virtual ~ISplitter() = 0;
virtual void useful() = 0;
}
ISplitter::~ISplitter() {
/* Make sure base class destructor gets called */
}
Run Code Online (Sandbox Code Playgroud)
和主要的实现标题
//CSplitter.h
#pragma once
#include "CHelper.h"
#include "ISplitter.h"
class CSplitter : public ISplitter {
private:
CHelper hlp;
public:
~CSplitter();
void useful();
}
Run Code Online (Sandbox Code Playgroud)
一些助手班
//CHelper.h
#pragma once
#include "ISplitter.h" // I need the struct
// Class definition should go here but is …Run Code Online (Sandbox Code Playgroud)