我有以下問題:C++預處理器和超載問題
讓我們考慮一下,我們有
#define SET callMe
#define COLUMN(x) #x
,並在我們的我們的計劃的主塊,我們有如下一行: SET(COLUMN(price)="hi");
其中預處理器運行後被翻譯成:
#callMe("price"="hi");
我需要的功能callMe
簽名是callMe(string str)
因此,我們必須做出使"price"="hi"
到"price=hi"
和讓callMe
函數來處理問題的其餘部分。最後要說的是,我所描述的所有程序都是Table類的一部分。
我唯一的選擇是使用操作符重載=
所以"price"="hi"
翻譯成想要的人,但我不能得到我應該超載,因爲我首先想到的是做以下過載
#std::string operator=(std::string str)
作爲成員Table類的函數,但似乎我無法在正確的軌道上找到它。
任何線索我如何能實現想要的操作?
爲什麼你在使用預處理器呢?只用一個重載操作符創建一組類來創建一個SQL表達式作爲AST就更好了。 – Omnifarious 2011-02-07 21:01:52