难以定义股票股息图
Having trouble defining a map for stock dividends
本文关键字:定义 更新时间:2023-10-16
我正在尝试编写一些代码来计算股息收益率。我需要每天计算股息收益率(股息/股票价格)。股息是不变的。最终,我将不得不将股价与动态提要联系起来,但与此同时,股价可能会在自己的地图上。我在类构造函数中插入了每只股票的股息金额,因为与在成员中使用条件语句相比,这在计算上不那么麻烦(即,如果股票=苹果,那么股息是X)。我在"AAPL"之前的"["处收到以下错误消息:
**error C2679: binary '[' : no operator found which takes a right-hand operand of type 'const
char [5]' (or there is no acceptable conversion) c:boost/unordered/unordered_map.hpp(415):
could be 'double &boost::unordered_map<K,T>::operator [](const FinModels::Instrument *const &)'
with
[
K=const FinModels::Instrument *,
T=double
]
while trying to match the argument list '(DividendMap, const char [5])'**
有人能根据我下面的简短代码和描述帮助我吗?键的const Symbol*类型是否不正确?
此外,如果在构造函数中发布固定的映射值是不好的约定,请告诉我什么更好。
头文件
public:
typedef boost::unordered_map<const Symbol*, double> Dividend_Map;
typedef Dividend_Map::iterator Dividend_MapIterator;
private:
Dividend_Map p_dividend_map;
.CPP文件
p_dividend_map["AAPL"] = 0.01;
p_dividend_map["BAC"] = 0.01;
p_dividend_map["C"] = 0.01;
映射的键类型是Symbol *
,您正试图将一堆const char *
粘贴到映射中。除非Symbol
是typedef
’d作为char
,否则这将不起作用。
从要存储在地图中的每个符号中创建一个Symbol
对象,然后将其地址添加到地图中。
Symbol appl("AAPL"); // assuming Symbol has a constructor taking a const char *
p_dividend_map[&appl] = 0.01;
在上面的示例中,aapl
的生存期必须与其作为映射成员的生存期相匹配。如果aapl
的生存期到期,则映射将指向无效的内存位置。
您可能想将地图更改为
typedef boost::unordered_map<Symbol, double> Dividend_Map;
然后将其用作
Symbol appl("AAPL");
p_dividend_map[appl] = 0.01;
相关文章:
- 在提升multi_index容器中,是否定义了"default index"?
- #定义c-预处理器常量..我做错了什么
- 用C++中的一个变量定义一个常量
- 部分定义/别名模板模板参数
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- #为""定义宏;静态";针对不同的上下文
- 如何确保C++函数在定义之前声明(如override关键字)
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 当类在C++中定义时,有什么方法可以"register"类吗?
- 在命名空间中定义函数还是限定函数
- 此代码是否违反一个定义规则
- 编译C++时未定义的引用
- 不同翻译单元中不可重载的非内联函数定义
- 为什么在定义函数之前先声明它
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 在类定义之后定义一个私有方法
- 使用用户定义函数的字符串反转
- 用户定义函数中的指针和输入
- vscode g++链路故障:体系结构x86_64的未定义符号
- 如何定义一个纯抽象基类