C++不同的源文件如何调用函数中的数值?
本帖最后由 jtwc 于 2023-5-28 12:35 编辑各位老师,C++不同的源文件中如何调用函数中的数值?谢谢了
案例:
CustomMdSpi.cpp中有函数:
void CustomMdSpi::OnRtnDepthMarketData(CThostFtdcDepthMarketDataField* pDepthMarketData)
{
pDepthMarketData->LastPrice;
}
如何在StrategyTrade.cpp调用pDepthMarketData->LastPrice;的值
void StrategyCheckAndTrade(TThostFtdcInstrumentIDType instrumentID, CustomTradeSpi *customTradeSpi, CustomMdSpi *customMdSpi)
{
double v_lastPrice = pDepthMarketData->LastPrice;
}
出错 29 IntelliSense:未定义标识符 "pDepthMarketData"
全局变量可解 boy7928 发表于 2023-5-28 13:49
全局变量可解
谢谢老师 单例模式
全局变量
都可以 要在不同的源文件中调用函数中的数值,你需要进行以下步骤:
1、在CustomMdSpi.cpp中定义一个全局变量来保存pDepthMarketData->LastPrice的值。在函数定义之前声明一个全局变量,并在函数内部将数值赋给该变量。例如:
// CustomMdSpi.cpp
double g_lastPrice = 0.0; // 全局变量
void CustomMdSpi::OnRtnDepthMarketData(CThostFtdcDepthMarketDataField* pDepthMarketData) {
g_lastPrice = pDepthMarketData->LastPrice;
}
2、在StrategyTrade.cpp中使用extern关键字声明这个全局变量,并将其用于需要的地方。例如:
// StrategyTrade.cpp
extern double g_lastPrice; // 声明全局变量
void StrategyCheckAndTrade(TThostFtdcInstrumentIDType instrumentID, CustomTradeSpi *customTradeSpi, CustomMdSpi *customMdSpi) {
double v_lastPrice = g_lastPrice;
// 使用v_lastPrice进行后续操作
}
通过这种方式,你可以在不同的源文件中共享并使用函数中的数值。请确保在使用该数值之前,CustomMdSpi.cpp中的函数已经被调用,以确保全局变量中的数值是最新的。 Dlan 发表于 2023-5-28 14:21
单例模式
全局变量
都可以
谢谢老师 华鼠 发表于 2023-5-28 14:21
要在不同的源文件中调用函数中的数值,你需要进行以下步骤:
1、在CustomMdSpi.cpp中定义一个全局变量来 ...
谢谢老师,非常正确 华鼠 发表于 2023-5-28 14:21
要在不同的源文件中调用函数中的数值,你需要进行以下步骤:
1、在CustomMdSpi.cpp中定义一个全局变量来 ...
老师,CustomMdSpi.cpp中有函数:
void CustomMdSpi::OnRtnDepthMarketData(CThostFtdcDepthMarketDataField* pDepthMarketData)
{
pDepthMarketData->LastPrice;
}
如何在StrategyTrade.cpp调用CustomMdSpi::OnRtnDepthMarketData这个函数呢?谢谢了 要在StrategyTrade.cpp中调用CustomMdSpi类的OnRtnDepthMarketData函数,你需要先创建一个CustomMdSpi对象,然后通过该对象调用函数。
以下是一个示例代码:
// StrategyTrade.cpp
#include "CustomMdSpi.h" // 包含CustomMdSpi类的头文件
void StrategyCheckAndTrade(TThostFtdcInstrumentIDType instrumentID, CustomTradeSpi *customTradeSpi, CustomMdSpi *customMdSpi) {
CustomMdSpi mdSpi; // 创建CustomMdSpi对象
// 调用CustomMdSpi对象的OnRtnDepthMarketData函数
CThostFtdcDepthMarketDataField depthMarketData;
mdSpi.OnRtnDepthMarketData(&depthMarketData);
// 在此可以处理depthMarketData中的数据或者执行其他操作
}
在上面的示例中,我们包含了CustomMdSpi类的头文件,并在StrategyCheckAndTrade函数内创建了CustomMdSpi对象mdSpi。然后,我们可以通过mdSpi对象调用OnRtnDepthMarketData函数,并传递一个CThostFtdcDepthMarketDataField对象的指针作为参数。
请注意,在使用此方法之前,你需要确保CustomMdSpi类的实现已经被编译并与StrategyTrade.cpp链接在一起。还要确保你正确地包含了CustomMdSpi类的头文件,并在编译时将CustomMdSpi.cpp文件添加到你的项目中。 华鼠 发表于 2023-5-28 18:21
要在StrategyTrade.cpp中调用CustomMdSpi类的OnRtnDepthMarketData函数,你需要先创建一个CustomMdSpi对象 ...
谢谢老师,我试试
页:
[1]
2