如何獲取C 物件的名稱

2021-06-22 01:34:57 字數 721 閱讀 5397

最近在寫乙個有關活**的演算法,需要通過活**中的乙個節點,得出活**的所有開始節點。為了驗證演算法的正確性,想要在遍歷到每個節點時把節點的物件輸出來,當然可以為節點物件設定乙個成員,在構造的時候不同的物件傳入不同的值,比如:nodeclass node1("node1");可是覺得每次要把那個名字再敲一遍,有點麻煩,所以想想乙個更好的方法。

我建立了乙個基類:

class classmeta

void printmeta()

}

需要獲取類名的class可以繼承這個類,通過乙個巨集來控制。

#define define_class(c,n) c n(#c,#n)

class nodeclass : public classmeta

};

使用的時候,可以define_class巨集來定義class

int main()

從上面的使用可以看到,物件的meta是始終跟隨物件的,即使傳給指標都不會變化,所以可以往classmeta加入更多的屬性,以方便**除錯。比如加入file屬性,可以知道物件是在哪個檔案中定義的,加入ref_count屬性,可以知道物件的引用情況。

當然,這只是為了方便除錯和解bug,乙個產品真正發布時,需要將這些東西去掉,如果這些能通過巨集定義來實現,通過乙個巨集來開關,那就perfect了。

獲取檔案物件的名稱

獲取檔案物件的名稱 一 取檔案物件名稱 我們可以使用函式obquerynamestring 來查詢獲取檔案物件 file object 的名稱。由於檔案物件有專門的名稱查詢函式iopqueryname 所以obquerynamestring 在內部會直接呼叫這個函式來查詢檔案物件名。我們還有另外一種...

獲取串列埠名稱的方法(C )

需要使用到的命名空間 using system.io.ports using microsoft.win32 registrykey 類 官網的介紹 下面是獲取串列埠名稱的方法 void checkserialport if cbportone.items.count 0 需要使用到的命名空間 us...

C 獲取xml屬性名稱

工作需要,讀取乙個超大量的xml檔案,從xml檔案中,讀取節點,以及節點下的屬性名稱,用屬性名稱進行建表操作。在網上查詢資料未果,於是自己尋找辦法。在xmlelement類下有乙個屬性是attributes,返回值為xmlattributecollection,節點element的屬性儲存在xmla...