logo
Contato | Sobre...        
rebarba rebarba

Rodrigo Strauss :: Blog

follow us in feedly

Tinha um bug no caminho, no caminho tinha um bug

O código C++ abaixo contém diversos bugs, e se comporta de forma estranha durante a execução (faça o teste em DEBUG). Quais são os bugs e por que eles acontecem?

//
// coloque esses include's no stdafx.h, se preferir
//
#include <iostream>
#include <vector>

//
// não consigo fugir do meu vício de programação Windows...
//
#ifndef DWORD
#define DWORD unsigned int
#endif

//
// vamos usar uma classe para facilitar a mudança
//
class CTest1
{
public:
	DWORD dwValue;
	std::string strValue;
};

class CTest2
{
private:
	CTest1* m_pTest1;
public:
	CTest2(DWORD dw, const std::string& str)
	{
		m_pTest1 = new CTest1();

		m_pTest1->dwValue = dw;
		m_pTest1->strValue = str;

	}
	~CTest2()
	{
		delete m_pTest1;
	}

	CTest1* GetTest1() const
	{
		return m_pTest1;
	}

};

int main()
{
	std::vector vecTest2;

	//
	// vamos colocar um CTest2 no vetor, passando
	// os valores para o construtor
	//
	vecTest2.push_back(CTest2(100, "1bit"));

	//
	// agora vamos pegá-lo e ver os valores
	//
        std::cout << "dwValue = "  << vecTest2[0].GetTest1()->dwValue  << std::endl;
        std::cout << "strValue = " << vecTest2[0].GetTest1()->strValue << std::endl;

	return 0;
}

No próximo post eu explico o bug. E em posts posteriores vou sugerir algumas formas de resolver o problema (sendo uma delas usando ATL, é claro!).


Em 06/04/2005 15:17, por Rodrigo Strauss


  
 
 
Comentários
Algo a dizer?
Nome:


Site:


E-mail:


Escreva o número vinte e seis:


 Não mostre meu e-mail no site, não serve pra nada mesmo...

Comentário





Os comentários devem ser sobre assuntos relativos ao post, eu provavelmente apagarei comentários totalmente offtopic. Se quiser me enviar uma mensagem, use o formulário de contato. E não esqueça: isso é um site pessoal e eu me reservo o direito de apagar qualquer comentário ofensivo ou inapropriado.
rebarba rebarba
  ::::