jtwc 发表于 2023-5-28 12:13

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

全局变量可解

jtwc 发表于 2023-5-28 13:51

boy7928 发表于 2023-5-28 13:49
全局变量可解

谢谢老师

Dlan 发表于 2023-5-28 14:21

单例模式
全局变量
都可以

华鼠 发表于 2023-5-28 14:21

要在不同的源文件中调用函数中的数值,你需要进行以下步骤:

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中的函数已经被调用,以确保全局变量中的数值是最新的。

jtwc 发表于 2023-5-28 14:37

Dlan 发表于 2023-5-28 14:21
单例模式
全局变量
都可以

谢谢老师

jtwc 发表于 2023-5-28 16:24

华鼠 发表于 2023-5-28 14:21
要在不同的源文件中调用函数中的数值,你需要进行以下步骤:

1、在CustomMdSpi.cpp中定义一个全局变量来 ...

谢谢老师,非常正确

jtwc 发表于 2023-5-28 16:43

华鼠 发表于 2023-5-28 14:21
要在不同的源文件中调用函数中的数值,你需要进行以下步骤:

1、在CustomMdSpi.cpp中定义一个全局变量来 ...

老师,CustomMdSpi.cpp中有函数:
void CustomMdSpi::OnRtnDepthMarketData(CThostFtdcDepthMarketDataField* pDepthMarketData)
{
      pDepthMarketData->LastPrice;
}
如何在StrategyTrade.cpp调用CustomMdSpi::OnRtnDepthMarketData这个函数呢?谢谢了

华鼠 发表于 2023-5-28 18:21

要在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文件添加到你的项目中。

jtwc 发表于 2023-5-28 18:32

华鼠 发表于 2023-5-28 18:21
要在StrategyTrade.cpp中调用CustomMdSpi类的OnRtnDepthMarketData函数,你需要先创建一个CustomMdSpi对象 ...

谢谢老师,我试试
页: [1] 2
查看完整版本: C++不同的源文件如何调用函数中的数值?