c類型無類型變量參數列表中的類的有意使用是常見的錯誤源。 實施例:有沒有辦法通過c風格變量參數列表中的值來禁止使用類?
class MyString {
public:
char *pChars;
int Length;
MyString(char *pChars) {
this->pChars = pChars;
Length = strlen(pChars);
} };
int main() {
MyString s1("Bla1"), s2("Bla2");
printf("%s%s", s1, s2); // This does not but should give a compiler warning/error!
return 0; }
的printf的呼叫有由值接收兩個s對象。這意味着他們的所有成員都只是記憶複製。但它們被解釋爲一個簡單的char指針。結果當然是一個運行時錯誤。
我不是要求這個解決方案,但我想有一些我可以添加到我的類,以便編譯器警告我,或給出錯誤。
已嘗試聲明但未實現複製構造函數。但似乎沒有複製構造函數被調用。 :-(
請只是回答到標題中的問題,我不需要的,爲什麼你不應該使用printf或者這些可變參數列表商榷 - 知道
感謝您的時間
。
你正在使用哪種編譯器? – kennytm 2010-08-16 13:12:51
「我不需要討論爲什麼你不應該使用printf或這些可變參數列表 - 知道這一點。」 - printf有什麼問題? – alternative 2010-08-16 13:22:12
我正在使用visual C++ – 2010-08-16 13:34:33