gpt4 book ai didi

c++ - 在 C++ 中,如何有效地在两个类之间共享数据?

转载 作者:行者123 更新时间:2023-11-28 04:22:21 25 4
gpt4 key购买 nike

#include "dataConsumer.h"

#include <iostream>
#include <Windows.h>

DataConsumer::DataConsumer(){}
DataConsumer::~DataConsumer(){}

void DataConsumer::Body()
{
std::cout << "DataConsumer Start" << std::endl;

while (1)
{
//I want to get providerData_ of DataProvide class in here

Sleep(1000);
}
}


#include "dataProvider.h"

#include <iostream>
#include <Windows.h>

DataProvider::DataProvider(){}
DataProvider::~DataProvider(){}

void DataProvider::Body()
{
std::cout << "DataProvider Start" << std::endl;

while (1)
{
//Update data in here
providerData_++;

Sleep(1000);
}
}

有两个类。我想在 dataConsumer 类中获取 dataProvider 类的 providerData_。

为了解决这种情况,我认为以下是一种解决方案。我制作了如下所示的单例数据传输类。但我不确定这是否是 c++ 中的通用解决方案。首先,我想知道我的解决方案是否可用。接下来,如果您知道更好的解决方案(或设计模式)来解决我的情况,请告诉我。

#ifndef DATATRANSFER_H
#define DATATRANSFER_H

class DataTransfer
{
public:
static DataTransfer* getInstance()
{
static DataTransfer instance;
return &instance;
}
void GetData(unsigned int *data)
{
if(data)
*data = data_;
}
void SetData(unsigned int *data)
{
if(data)
data_ = *data;
}

private:
DataTransfer(){}
~DataTransfer(){}

unsigned int data_;
};

#endif


#include "dataConsumer.h"
#include "dataTransfer.h"

#include
#include

DataConsumer::DataConsumer(){}
DataConsumer::~DataConsumer(){}

void DataConsumer::Body()
{
unsigned int data = 0;
std::cout << "DataConsumer Start" << std::endl;

while (1)
{
//I want to get providerData_ of DataProvide class in here
DataTransfer::getInstance()->GetData(&data);

std::cout << "DataConsumer data:" << data << std::endl;

Sleep(1000);
}
}

#include "dataProvider.h"
#include "dataTransfer.h"

#include
#include

DataProvider::DataProvider() : providerData_(0)
{
}

DataProvider::~DataProvider(){}

void DataProvider::Body()
{
std::cout << "DataProvider Start" << std::endl;

while (1)
{
//Update data in here
providerData_++;

DataTransfer::getInstance()->SetData(&providerData_);

Sleep(1000);
}
}

最佳答案

如果两个类都需要能够获取和设置 providerData_,我会创建第三个 Data 类来拥有 providerData_。然后我可以将 Data 类的指针指向所有需要访问该数据的类。

关于c++ - 在 C++ 中,如何有效地在两个类之间共享数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55164854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com