『漫游』酷论坛>『动漫主题讨论区』>[野中萌好藍]簡單易懂 ..

Netwxy@2009-07-12 01:05

引用
最初由 unkstar 发布

吾等C++黨猶如頭頂青天。。。
還要是先進的泛型代碼,嵌套定義、非類型模版參數……
好親切啊。。。。

不過,野中藍啊,這代碼問題太多了吧。。。

靜態成員函數中的神秘數字、enum里最後多餘的那個逗號、沒有對模版參數進行有效檢查、decoder的兩個重載都缺少結束的},第二個decoder缺了const qualifier
Monoral類分明是Mixer的嵌套類,可是又從Mixer繼承,這會得到一個使用未完整定義類的編譯錯誤,然後還有使用Mixer的時候不指明模版參數。。。

丟去編譯起碼不會少於100個編譯錯誤吧,大概。。。

算了,我要正義。。。


无聊来解释一下

enum最后那个逗号不会产生错误,相反可以方便日后增加新的enum项
模版参数当然是不用检查有效性的(也没有好办法检查),传进来的东西是不是对的全靠使用者决定。所以C++0x才要增加concept来限制模版参数的行为。
嵌套类可以正常继承自己外面的类,而且因为身处模版类里面,所以可以直接使用Mixer而不加模版参数(会默认为Mixer

那个inline是signed 16位整型转unsigned 8位整型,就是把-32768到32767之间的数变换到0到255,所以是返回u8(v/256 + 128)

至于那两个decoder没写完,大家就当是剩下的部分在屏幕外面吧[/han]
引用

unkstar@2009-07-12 01:56

引用
最初由 Netwxy 发布


无聊来解释一下

enum最后那个逗号不会产生错误,相反可以方便日后增加新的enum项
模版参数当然是不用检查有效性的(也没有好办法检查),传进来的东西是不是对的全靠使用者决定。所以C++0x才要增加concept来限制模版参数的行为。
嵌套类可以正常继承自己外面的类,而且因为身处模版类里面,所以可以直接使用Mixer而不加模版参数(会默认为Mixer

那个inline是signed 16位整型转unsigned 8位整型,就是把-32768到32767之间的数变换到0到255,所以是返回u8(v/256 + 128)

至于那两个decoder没写完,大家就当是剩下的部分在屏幕外面吧[/han]


逗號這個還真的不知道。。

檢查模版參數我指的是非類型模版參數,這個可以用static assert這類手法來檢查,不然的話,給個-1作為vocs的數組下表就好玩了。。。哦,對,那個非類型模版參數居然是int型。。數組下標就給我乖乖的用size_t。。。。

嵌套類繼承自己外部的類是絕對不行的因為要從一個類去派生必須知道它的具體佈局,而在嵌套類定義的時候其外部類的定義勢必尚未結束,編譯器這時還不知道外部類的佈局,所以在這個點上外部類尚未完成定義,這是一個不可解的循環,是沒有任何trick能解決這個問題的。這是之前我曾經想過用嵌套類繼承外部類的手法來實現一種trick,翻遍標準得出來的結論。(付VC8的編譯錯誤信息)


inline那個函數從名字能看出用處,不過用這種寫法會讓維護變得非常頭痛,而且可移植性也會很差,應該使用limits庫。

那兩個decoder。。。。。我真想知道她用的多大的屏幕,這麼長的一個函數居然不換行。。。。
引用

netsnail@2009-07-12 02:01

引用
最初由 unkstar 发布

第二個decoder缺了const qualifier


补充下,第二个decoder把第二个参数作为作为参数传给了vocs... 大概会改变vocs的内部状态吧。。。
所以不能加const。 大概,是从哪里抄来的代码吧,出错机会不大...

好吧,我认真了。。。:rolleyes:
引用

Netwxy@2009-07-12 02:22

引用
最初由 unkstar 发布


逗號這個還真的不知道。。

檢查模版參數我指的是非類型模版參數,這個可以用static assert這類手法來檢查,不然的話,給個-1作為vocs的數組下表就好玩了。。。哦,對,那個非類型模版參數居然是int型。。數組下標就給我乖乖的用size_t。。。。

嵌套類繼承自己外部的類是絕對不行的因為要從一個類去派生必須知道它的具體佈局,而在嵌套類定義的時候其外部類的定義勢必尚未結束,編譯器這時還不知道外部類的佈局,所以在這個點上外部類尚未完成定義,這是一個不可解的循環,是沒有任何trick能解決這個問題的。這是之前我曾經想過用嵌套類繼承外部類的手法來實現一種trick,翻遍標準得出來的結論。(付VC8的編譯錯誤信息)


inline那個函數從名字能看出用處,不過用這種寫法會讓維護變得非常頭痛,而且可移植性也會很差,應該使用limits庫。

那兩個decoder。。。。。我真想知道她用的多大的屏幕,這麼長的一個函數居然不換行。。。。


仔细看了一下……如果是一般的类确实果然是不能直接继承外部类的。但如果是模版类的话,则会出现非常诡异的情况。似乎是因为该嵌套类也是模版类,所以在未使用之前不会被处理,而当你用到该嵌套类的时候,整个外部类的定义已知,所以编译得以通过

比如这个……

template
class foo
{
public:
class bar : public foo
{
};
};


说来果然不要认真了……[/han]
引用

eva00lilith@2009-07-12 02:54

第一话直接跳过去做第三卷么...
引用

神魔@2009-07-12 08:16

一ノ瀬弓子クリスティーナはパンツをはいてない!
引用

9616777@2009-07-12 08:28

喂,你们那么认真地讨论C++干嘛
引用

shadowkey@2009-07-12 08:57

看起来其不错啊,女主的发色很泰莎啊。
引用

jy1986@2009-07-12 09:02

人家摆明就是故意搞错代码的.....你们认真就输了...
引用

春日步@2009-07-12 09:45

................................

service赞啊....这有dvd吧 肯定有
引用

罗诺威@2009-07-12 09:54

很不错,从节奏到画面虽然不能说十分优秀,但是我看到了制作组满满的诚意
引用

zhangqino2@2009-07-12 09:58

好,很强大的片子,上来就劈腿
引用

mobilebay@2009-07-12 10:31

引用
最初由 9616777 发布
喂,你们那么认真地讨论C++干嘛
因为在破沟...
引用

XWZ@2009-07-12 10:45

引用
最初由 unkstar 发布


所以我們程序猿都成了魔法師……[/ku] [/ku] [/ku]


我最近在当魔法学徒……:p
引用

liwangli@2009-07-12 10:53

C++好明显。。。
引用

«1234»共4页

| TOP