作者uranusjr (←这人是超级笨蛋)
看板MacDev
标题Re: [问题] Obj-C++ and template
时间Sat Sep 21 20:41:58 2013
之前在 C/C++ 板就看你不知道在问什麽
原来是想用在 block 上, 难怪说是 C 限定
你为何不一开始就说出完整需求就好啦...
既然是要用在 block 上那麽 macro 解也不可行了
※ 引述《leondemon (狗狗)》之铭言:
: 想在专案中使用 C++ 的 template功能
: 来让一个 block 可以接受和回传一个 undefined_type
: 请问是要怎麽实作呢? 可以像下面这样宣告吗?
: template<class T>
: typedef T (^Block)(T input);
不行, Objective-C++ 不支援混合语法
C++ template 本身没有实体 (他只是, 顾名思义, 函式的「范本」, 不是函式)
所以也不能传 template function pointer
你可能必须考虑使用别的设计模式
如果把你的 use case 讲清楚, 会比较能推荐好的解法
: 另外 哪边有不错的 Obj-C++ 的教学?
: 我把一个 Obj-C 的 .m 档改成了 .mm 档之後
: 就发生了 Undefined symbols for architecture i386 的 linker error
: 改回 .m 档却又可以执行...
--
「我最想要的同伴嘛,首先是要笑口常开,其次是我们能永远不会发生误会。
如果这些都能办到的话,嗯,如果他是世界上第一流的桥手,也还不错。」
-- 班尼多‧加罗素,前义大利蓝队成员
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.32.81.146
1F:推 leondemon:谢谢 ^^ 因为想说这应该是 C 的问题 所以在那边就没提 09/21 20:59
2F:推 leondemon:我以为 block 也可以在 C++ 里面用... 09/21 21:02
3F:推 Killercat:其实template block...我还真想不到哪里非用这种不可@@ 09/21 23:13
4F:→ Killercat:block其实就是lambda 就是个只需要用一次用过即丢的东西 09/21 23:13
5F:推 appleway:C++11 有自己的block 语法。 09/22 23:21
6F:→ appleway:www.cprogramming.com/c++11/c++11-lambda-closures.html 09/22 23:22
7F:→ uranusjr:lambda 不能搭配 template 使用, 对原 po 的需求毫无帮助 09/22 23:50
8F:推 Killercat:这个我倒是很乐观clang会把它们整合在一起.... 09/23 03:33
9F:→ Killercat:不过我还是想不出有什麽原因会让你不用templated func 09/23 03:33
10F:→ Killercat:而非得搞个templated lambda不可 =P 09/23 03:33