C++ uygulaması çalışırken çok rahatsız edici bir sorun var. Windows Xp'in Interix alt sisteminde pgcpp derleyicisini kullanıyorum. Sorunum burada açıklanmıştır:C++ uygulaması, bir nesne nesnesini başlatırken çöküyor.
Başlık dosyasında bir sınıf tanımım var. Bu başlık dosyası bir kaynak dosyada bulunur. Bu sınıfın iki kurucusu vardır ve temel olarak bir kaydediciyi uygulamak için kullanılır. İlk kurucu argümanı olarak dışarı atmayı * yaparken, ikinci aşırı yüklenmiş kurucu bir dosya adı ve varsayılan bir false değeri yanlışı alır. Bu ikinci kurucunun amacı, geçirdiğimiz dosya adı için bir akış almak ve mesajların kaydını başlatmaktır.
MessageLogger::MessageLogger(std::ostream *out): p_out (out), p_ofstream (0)
{
if (p_out)
{
(*p_out) << "Started logging messages" << endl;
}
}
MessageLogger::MessageLogger (char const *filename, bool append_to_file) : p_out (0), p_ofstream (0)
{
if (append_to_file)
{
p_ofstream = new std::ofstream (filename, ios::app);
}
else
{
p_ofstream = new std::ofstream (filename);
}
p_out = p_ofstream;
if (p_out)
{
(*p_out) << "Started logging messages" << endl;
}
}
p_out ve p_ofstream beyanları aşağıdaki gibidir Nerede::
std::ostream *p_out;
std::ofstream *p_ofstream;
unsigned int p_indent_level;
Tüm yukarıda belirtilen üç özel üyeleridir şöyle kurucularınızdaki kodudur.
MessageLogger logger ("filename");
o append_to_file yanlış varsayılan değeri vardır unutmayın: olarak MessageLogger sınıfının örneğinin yapılır. PGDBG
da yanlış davranıyor. Denetimin p_ofstream = new std::ofstream (filename);
adresinde ne zaman devreye girebileceğini anlayamıyorum ve rastgele bir konuma geçiyor ve uygulama çöküyor. Ayrıca
, ben PGDBG Karışık veya Demontaj kodunun de görmek çalıştığınızda mesajla ayıklayıcı çöker:
jpgdbg parse: Newline must follow cmd in 'eleq "0" struct MessageLogger *Mes
sageLogger::MessageLogger(struct basic_ostream *out); (TranslatorGeneric.cpp
)
'
jpgdbg jpgdbgFileSelector processMsg: Warning unexpected msg token 5
jpgdbg parse: Newline must follow cmd in 'eleq "1" struct MessageLogger *Mes
sageLogger::MessageLogger(char *filename, unsigned char append_to_file); (Tr
anslatorGeneric.cpp)
'
jpgdbg jpgdbgFileSelector processMsg: Warning unexpected msg token 5
Ben tam aynı yaptım nerede örnek bir programda bu yeniden alamıyorum Yukarıdaki gibi bir şey ama her şey iyi çalışıyor. Birisi neler olduğunu açıklayabilir mi ve eğer bunun bir çözümü varsa?
Teşekkürler, Aditya.
Kodunuzda 'append_to_file' varsayılan değere sahip değil. –
Uygulama veya hata ayıklayıcı hakkındaki sorunuz mu var? Her iki durumda da: Tam olarak ne soruyorsunuz? –
Soru, başarısız olan uygulama hakkında. Hata ayıklayıcı, paylaşmam gerektiğini düşündüğüm bir sorun. Append_to_file öğesi false olarak ayarlandı. Üzgünüm, tüm kodu gösterdim. – Aditya