मेरे आवेदन में मेरे पास बहुत सारे लॉग हैं। मैं errorsLogger
नामक एक स्थान पर सभी लॉग से सभी त्रुटियों को जमा करता हूं। मैं इसे इस तरह से क्रियान्वित किया है:किसी अन्य फ़ंक्शन में तर्कों की परिवर्तनीय संख्या को कैसे आगे बढ़ाया जाए?
static Logger errorsLogger;
....
void Logger::Error(std::string format, ...) {
va_list arglist;
va_start(arglist, format);
if (this != &errorsLogger) {
errorsLogger.Error(format, arglist); // how to forward parameters?
}
vfprintf(logFile, , format.c_str(), arglist);
fprintf(logFile, "\n");
fflush(logFile);
va_end(arglist);
}
हालांकि इस कोड के रूप में की उम्मीद errorsLogger
थोड़ा अजीब तार शामिल काम नहीं करता है - यह चर तर्क पारित नहीं किया था लगता है। वैध होने के लिए मेरे कोड को कैसे ठीक करें?
आपको 'त्रुटि' का एक संस्करण चाहिए जो एक ['va_list'] (http://en.cppreference.com/w/cpp/utility/variadic/va_list) लेता है। – BoBTFish
अपने लॉगर के इंटरफेस को बदलने पर विचार करें, इसलिए यह 'ओस्ट्रीम' जैसा दिख रहा है, आप इस तरह की चीजें करने में सक्षम होंगे: 'लॉगर :: त्रुटि() << "वेरिएबल एक्स है" << x;' वास्तव में 'लॉगर :: त्रुटि() 'एक ओस्ट्रीम और ' – piokuc
वापस कर सकता है क्या मैं केवल पहले चरण के रूप में स्ट्रिंग को प्रारूपित कर सकता हूं और फिर std :: string को आगे बढ़ा सकता हूं? – javapowered