[问题] pure mvc notify 使用 tuple

楼主: diabloevagto (wi)   2016-06-17 14:09:12
开发平台(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
作者: kevingwn (如云如风的人生)   2016-06-19 18:53:00
你还是得实作对应各个型别的doCommand()并要知道NotifyParam是哪一种 例如https://ideone.com/NaLIih
楼主: diabloevagto (wi)   2016-06-21 10:05:00
感谢建议,但目前 Mediator 会有多种型别,各个都实作会有一定程度的负担...

Links booklink

Contact Us: admin [ a t ] ucptt.com