|
|
|
|
Bonjour,
Mon programme ne s'exécute pas et je n'arrive pas à détecter mes erreurs :
Voilà le code :
#include<iostream>
using namespace std;
class C
{
int *v;
public:
C(int x);
~C();
C(C c);
int getv();
};
C::C(int x)
{
v=new int(x);
cout<<"objet cree..."<<endl;
}
C::~C()
{
delete v;
cout<<"objet detruit..."<<endl;
}
C::C(C c)
{
v=new int(c.v);
cout<<"objet cree par recopie..."<<endl;
}
int C::getv()
{
return *v;
}
void f(C c)
{
cout<<"la valeur de V = "<<c->getv()<<endl;
}
void main()
{
C c1(0), c2(1), c3(2), c4;
C *p;
cout<<c2.getv()<<endl;
f(c3);
p=new C(4);
f(p);
cout<<p->getv();
delete p;
}
Configuration: Windows XP Internet Explorer 6.0
Répondre à le père
|
Mauvaise déclaration de constructeur par recopie + joyeux mélimélo de pointeurs et de variables pointées...
// vcconsole.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<iostream>
using namespace std;
class C
{
int *v;
public:
C(int x);
~C();
C(const C& c);
int getv();
};
C::C(int x)
{
v=new int(x);
cout<<"objet cree..."<<endl;
}
C::~C()
{
delete v;
cout<<"objet detruit..."<<endl;
}
C::C(const C& c)
{
v=new int( *c.v );
cout<<"objet cree par recopie..."<<endl;
}
int C::getv()
{
return *v;
}
void f(C c)
{
cout<<"la valeur de V = "<<c.getv()<<endl;
}
void main()
{
C c1(0), c2(1), c3(2), c4(3);
C *p;
cout<<c2.getv()<<endl;
f(c3);
p=new C(4);
f(*p);
cout<<p->getv();
delete p;
} |
J'ai horreur du constructeur par recopie !! beurk :(
|