看板 C_and_CPP 關於我們 聯絡資訊
原始碼大概如下表示 template < template < class > class Policy > class Object : public Policy< Object::Node > ~~~~~~~~~~~~ 這邊因為Node沒宣告所以無法編譯 { class Node {}; }; 請問如何宣告 Nested class 或是 別的解決的方式 @_@? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.233.54
tinlans:幹嘛這樣寫,你就直接 Policy<Object> 這樣傳不就好了? 08/27 00:19
tinlans:把 Policy 的設計改一改就可以 work 了。 08/27 00:19
tinlans:哦,看錯,你的 Policy 是 template template 不能這樣 XD 08/27 00:21
ADF:譬如說Policy 是一個 alloctor 我要 alloc 的試 Node 不是Obj 08/27 00:23
ADF:如果修改Policy設計那麼 有現成可以用的 class 變成不能用了 08/27 00:26
tinlans:policy 是這種東西的話,你大概只能把 Node 提到外面去。 08/27 00:28
tinlans:因為在 Policy<> 裡面 compiler 沒辦法幫你展開 Object。 08/27 00:31
ADF:看來只剩這個方法了 囧 08/27 00:36
tinlans:通常這樣設計 policy,你至少還要增加一個 template 08/27 00:37
tinlans:parameter 去引導後面的 template parameters,不能把 08/27 00:38
tinlans:host 直接丟到 policy 的 template arg list 上。 08/27 00:38
tinlans:除非你以合成代替繼承,才能這樣設計,但是會失去擴充性。 08/27 00:40