作者hn12404988 (Willy)
看板C_and_CPP
標題[問題] 避免「變數名稱」衝突「class名稱」
時間Thu May 11 12:04:47 2017
Hi, 剛遇到個問題,花了十幾分鐘才找到錯誤點
不是十幾分鐘寶貴,而是我現在的C++知識不曉得要怎麼避免日後遇到同樣問題
問題以下:
例如在一個class中,宣告一個自己寫的class,例如這class叫「now_time」
但是這個class已經繼承了兩個class,其中一個非常古老的class裡面有個變數是int
也叫做「now_time」
protected:
int now_time //檔案的深處
protected:
now_time my_time //剛寫的新class
剛剛g++編譯出現錯誤,但是沒跟我說這個衝突,只說now_time is not a type
所以讓我一開始以為是我#include出錯的問題
但找到問題出在class name衝突variable name後,我不太知道有甚麼好的方法可以日後避免?
(假設是個大型專案,OOP繼承好幾層,不可能用頭腦記所有class名稱)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.165.112.226
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1494475490.A.850.html
1F:→ james732: 有的時候覺得寫程式最困難的是命名XD 05/11 12:19
2F:推 boss0405: 所以一堆code前面加個底線,或是前後都加個底線,只能說 05/11 12:26
3F:→ boss0405: 命名的時候不要太common 05/11 12:26
4F:→ descent: data member 我後面會加底線, int md_; 05/11 12:29
5F:→ tinlans: class name 用 camel case 命名啊 05/11 12:36
6F:推 Sidney0503: 專案namespcae 可以參考boost的格式 05/11 13:05
7F:推 k387259: 我都是用namespace處理掉 05/11 13:50
8F:推 BlazarArc: namespace在哭 05/11 15:00
9F:推 s4300026: 我是類別和方法,開頭第一字一律大寫,變數第一字一律小 05/11 17:45
10F:→ s4300026: 寫 05/11 17:45
11F:→ s4300026: 應該說自定義型別第一字大寫 05/11 17:46
12F:→ rodion: follow好的naming convention 就不會出現這種情形 05/11 17:46
13F:推 steve1012: 自定義class name 通常會規定命名規則不太會衝到 05/11 21:53