作者diabloevagto (wi)
看板C_and_CPP
标题[问题] pure mvc notify 使用 tuple
时间Fri Jun 17 14:09:12 2016
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
g++
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
none
问题(Question):
仿照 pure mvc 机制自己做了简化的 mvc 架构
c++ array 不能塞入的资料都用不同型态,所以传送 INotification 会有问题
pure mvc 目前是使用 void* 的方式传送,接收方在强转型别
目前的版本是使用 std::tuple 实现一个可以塞入不同行别的 array,接收方也可以直接
使用 std::get 取得型态跟资料不用强转
但这样的问题是在 MediatorBase 就不能用再做继承使用 pure vurtual function
因为 NotifyParam 是一个 template class
请问是否有比较好的解决方式
程式码(Code):(请善用置底文网页, 记得排版)
https://ideone.com/lwdd2L
这个是单纯只有 NotifyParam 的版本,是可以正常执行的
https://ideone.com/J0tR9O
将第 6 行开启之後开启 MediatorBase 部份会有编译错误
补充说明(Supplement):
希望达成的功能就是在 NotifyParam 带的 body 可以像 js 一样多种型别的 array
↑ 使用 std::tuple
MediatorBase 定义了 virtual void doCommand(NotifyParam notifyParam) = 0;
让其他的 Mediator 继承後一定要实作 doCommand
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.170.17.156
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1466143758.A.2E1.html
1F:推 kevingwn: 你还是得实作对应各个型别的doCommand()并要知道NotifyP 06/19 18:53
3F:→ diabloevagto: 感谢建议,但目前 Mediator 会有多种型别,各个都 06/21 10:05
4F:→ diabloevagto: 实作会有一定程度的负担... 06/21 10:05