c++ - 在 C++ 中导出父类和基类
问题描述
我试图创建一个由 C++ 类组成的 DLL,包括继承。该 DLL 应该由某些控制台应用程序访问。
父类:
参数计算器.h
#ifdef MY_EXPORTS
#define PARAMCALCULATOR __declspec(dllexport)
#else
#define PARAMCALCULATOR __declspec(dllimport)
#endif
class PARAMCALCULATOR paramCalculator
{
public:
paramCalculator();
~paramCalculator();
float m_current;
};
参数计算器.cpp
#include "stdafx.h"
paramCalculator::paramCalculator()
{
}
paramCalculator::~paramCalculator()
{
}
儿童班:
当前计算器.h
#ifdef MY_EXPORTS
#define PARAMCALCULATOR __declspec(dllexport)
#else
#define PARAMCALCULATOR __declspec(dllimport)
#endif
class PARAMCALCULATOR currentCalculator :
public paramCalculator
{
public:
currentCalculator();
~currentCalculator();
float m_tubePower = 1500;
float m_tubeCurrent;
void calcCurrent(float vo);
};
当前计算器.cpp
#include "stdafx.h"
currentCalculator::currentCalculator()
{
}
currentCalculator::~currentCalculator()
{
}
void currentCalculator::calcCurrent(float vo)
{
m_tubeCurrent = m_tubePower / vo;
std::cout << m_tubeCurrent << std::endl;
m_current = m_tubeCurrent;
}
访问 DLL 的控制台应用程序如下所示:
#include "paramCalculator.h"
#include "currentCalculator.h"
class tubeCurrent
{
public:
tubeCurrent() {};
~tubeCurrent() {};
void setParam(float v)
{
ab.calcCurrent(v);
m_current = ab.m_tubeCurrent;
}
currentCalculator ab;
float m_current;
};
int main()
{
tubeCurrent ac;
float voltage = 200;
ac.setParam(voltage);
}
运行控制台应用程序时,它在输出窗口上显示“7.5”,这是当前的预期计算值。这告诉我访问 DLL 是有效的。但是,变量 m_tubeCurrent 和 m_current 尚未更改为值 7.5。谁能告诉我如何解决这个问题并让两个变量都更新它的值?
在一些测试中,我发现一旦我删除了两个类之间的继承关系,成员变量“m_tubeCurrent”就会成功更新。但是,当涉及到两个类之间的继承时,我正在努力寻找一种访问成员变量的方法。
我已经解决了这个问题,但无法解决我的问题。
提前致谢!
编辑:
为了让自己更清楚,这是控制台应用程序中调试窗口的两个图像。
包括继承,计算值不分配给相应的变量:
没有继承导致计算的值被分配给相应的变量:
在后一个中,我只将 currentCalculator.h 文件中的 currentCalculator 类定义从
class PARAMCALCULATOR currentCalculator :
public paramCalculator:
至
class PARAMCALCULATOR currentCalculator
两种变体在执行 DLL 时都以正确的方式计算值,但是只有后一种变体允许我在执行 DLL 后仍然访问变量。
解决方案
推荐阅读
- javascript - 无限平铺网页
- r - 当矩阵包含许多小条目时,base::chol() 会变慢
- python - Tkinter 部分点击通过?(仅限 Windows)
- css - 悬停时两个不同元素的转换延迟反转
- python - 将千位逗号分隔符添加到 Relplot
- python - 使用 Python 中的带阻滤波器滤除频率范围,并使用傅里叶变换 FFT 确认
- android - 无法使用 Fastlane 上传 aab/apk 来玩商店
- java - GraalVM native-image -H:ConfigurationFileDirectories 文件的文档
- php - PHP curl - 存在错误时获取响应标头?
- php - WordPress 自定义帖子类型存档不加载