2011-01-31 30 views
0

我們遇到的問題是調用封裝在模板中的類中的方法。Aix Visual Age C++從版本8移至版本11模板問題

void BuildData(DataBuilder &dBuild, char* name="AccountDetails") { ... } 

在版本8編譯器調用此方法與單個參數選擇默認值並工作。

在使用單個參數調用此方法的版本11編譯器中,我們得到編譯錯誤,要求我們明確提供第二個參數,因此忽略默認值。

+0

你是用`-qnoro`還是`-qro`編譯的? – kbjorklu 2011-01-31 10:37:32

+0

這與模板有什麼關係?而且,是的,正如MSalters所說的,爲了使默認參數工作,const char []必須轉換成char *。我知道有一個_deprecated_轉換做這個,當你明確要求它。我不確定這是否延伸到隱含的這種轉換。 – sbi 2011-01-31 12:26:54

回答

3

如果您提供一個參數,則必須將默認值"AccountDetails"轉換爲char*類型。沒有看到錯誤,我假設它是一個「丟失const修飾符」,或者AIX調用的那個。字符串文字不可修改,但name指向可修改的字符串。通常這是一個警告,但這取決於編譯器設置。

此修復程序可能會添加缺少的const