Using C++
posted on 2010-06-11 17:03 codejie 閱讀(1916) 評(píng)論(12) 編輯 收藏 引用 所屬分類(lèi): C++
呵呵 很簡(jiǎn)單 代碼不能這么寫(xiě) 類(lèi)的依賴(lài)關(guān)系不允許形成循環(huán),放你這里就是兩個(gè)類(lèi)不能互相都依賴(lài)對(duì)方。 回復(fù) 更多評(píng)論
@風(fēng)吹云散盡是的,把CB類(lèi)去掉,只留下typedef int INT;void Func(CA::TVector& vt);這樣也不行,相對(duì)于空間概念來(lái)說(shuō)是namespace和class是一樣的。我現(xiàn)在想知道再不增加新文件的情況下,當(dāng)然了,也別合成一個(gè)文件,有解決辦法不? 回復(fù) 更多評(píng)論
只需要將 nameA.h 中的:#include "classA.h"替換為:class CA;即可。 回復(fù) 更多評(píng)論
@taowangCA::TVector這個(gè)類(lèi)型怎么讓編譯器知道呢?這種前置方式一般只能用于nameA.h中CA的指針或引用實(shí)例。當(dāng)含有類(lèi)型時(shí),就不好用了~ 回復(fù) 更多評(píng)論
不是合并成一個(gè)文件,而是你要拆成3個(gè)文件。 回復(fù) 更多評(píng)論
@陳梓瀚(vczh)嗯,我只是不想增加新文件。這里只是個(gè)例子,實(shí)際代碼太多,要移動(dòng)到新文件中,工作量太大了,所以想看看有沒(méi)有其它方法~ 回復(fù) 更多評(píng)論
@codejie 文件多容易管,實(shí)在不行你用C#,人家沒(méi)有頭文件,聲明沒(méi)有順序,類(lèi)庫(kù)還大,多爽 回復(fù) 更多評(píng)論
個(gè)人覺(jué)得這種情況,就設(shè)計(jì)感覺(jué)上來(lái)說(shuō)就不好。互相耦合。單就這個(gè)情況來(lái)看,可以把類(lèi)型抽離到一個(gè)公共文件里。如果是對(duì)類(lèi)本身的依賴(lài),當(dāng)然可以使用前置聲明。 回復(fù) 更多評(píng)論
@陳梓瀚(vczh)在我看來(lái)文件超過(guò)15個(gè)就難管了,一般這時(shí)我就開(kāi)始封裝庫(kù)了。。。C#就扯遠(yuǎn)了,BASIC不更好,變量都可以不定義呢。。。咱們還是C++吧~ 回復(fù) 更多評(píng)論
@Kevin Lynx說(shuō)的沒(méi)錯(cuò),變成這樣是有歷史原因的,寫(xiě)著寫(xiě)著就開(kāi)始耦合了,都沒(méi)有注意到。。。目前做的修改就是在分離類(lèi)型,只是有點(diǎn)亂,一時(shí)還真不好下手,所以總想著有沒(méi)有偷懶的法子。。。(看來(lái)沒(méi)有了。。。) 回復(fù) 更多評(píng)論
@codejie 幾百個(gè)文件上千個(gè)類(lèi)我覺(jué)得都是正常的吧,功能一多代碼自然就要多了……畢竟文件那只是物理結(jié)構(gòu),跟代碼一點(diǎn)關(guān)系都沒(méi)有,何必在意。你是編程還是編文件啊…… 回復(fù) 更多評(píng)論
@陳梓瀚(vczh)說(shuō)來(lái)慚愧,從來(lái)沒(méi)自己寫(xiě)過(guò)一個(gè)超過(guò)100+個(gè)文件的工程,都很零散。。。 回復(fù) 更多評(píng)論