【发布时间】:2021-12-27 09:31:31
【问题描述】:
我正在尝试创建一个类的实例,我可以随时访问它,这是我认为管理这些数据的最佳方式,如果不是,请说出来。我正在尝试存储来自 binance.us 的每个加密货币的数据。这是我的班级结构:
class CryptoStats {
public:
std::string name;
std::string lastPriceStr;
int lastPrice = 0;
int score = 0;
int priceHistory[2] = { 0,0 }; // one column for time, other for price
};
我想知道如何制作它的单个实例,例如 CryptoStats["BTCUSD"],然后我可以在其中编辑它,检查它是否存在等。 我尝试将它存储在一个集合中,但它不允许我:
std::set<std::pair<std::string, CryptoStats>> cryptoStats;
基本上我正在寻找与这个 Lua 表结构等效的 C++:
local cryptoStats = {
["BTCUSD"] = {lastPrice = 0, lastPriceStr = "0", score = 0, priceHistory = {0,0}},
["ETHUSD"] = {lastPrice = 0, lastPriceStr = "0", score = 0, priceHistory = {0,0}}
}
【问题讨论】:
-
看起来更像
std::map<std::string, CryptoStats> cryptoStats;。 en.cppreference.com/w/cpp/container/map -
您可能正在寻找
struct而不是class。 -
@NO_NAME 和有什么区别?
-
@Federico stackoverflow.com/q/54585/3052438
-
@Klaus 好的,如果所有成员都是公共的,那么类也支持聚合初始化是对的。但是,仍然存在概念上的差异。使用类意味着封装和一些允许以受控方式修改私有成员的功能。如果您只想要一个普通的非封装结构,而您使用的是一个类,那么您会误导读者。只是让代码工作,还有一些好的做法,虽然不是严格要求,但也很重要。