 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Penguin_X Guest
|
Posted: Wed Apr 13, 2005 1:19 am Post subject: Les classes et les méthodes |
|
|
Salut. Si j'écrit un programme qui ecrit une string dans un fichier et
je voudrais faire ça avec des classes. Est-ce que je peut faire une
méthode qui écrit ma string(une variable privé que jaurais pris le soin
de définir avec un objet). Merci d'avance :)
Voici un exemple:
class monfichier
{
private:
char szMonNomDeFichier[50];
char szMonBuffer[1024];
public:
int setName(char szFileName[50])
{
this->szszMonNomDeFichier;
}
int getData(char szBuffer[1024])
{
this->szMonBuffer;
}
void ecritFichier()
{
// ici j'écrit dans le fichier avec szMonNomDeFichier et avec
// szMonNomDeFichier et j'écrit le buffer dans le fichier
}
};
int main()
{
monfichier mySelf; // je crée un objet
// apres j'utilise ma classe pour travailler dans mon
// fichier avec les méthodes contenu dans celle-ci
}
--
#include <iostream>
#include <string>
int main(){
string myFavoriteOS = "Unix";
cout << "My favorite OS is "
<< myFavoriteOS << end;
return 0;
}
|
|
| Back to top |
|
 |
Stephane Wirtel Guest
|
Posted: Wed Apr 13, 2005 7:16 am Post subject: Re: Les classes et les méthodes |
|
|
Penguin_X a écrit :
| Quote: | Salut. Si j'écrit un programme qui ecrit une string dans un fichier et
je voudrais faire ça avec des classes. Est-ce que je peut faire une
méthode qui écrit ma string(une variable privé que jaurais pris le soin
de définir avec un objet). Merci d'avance
oui. |
#include <iostream>
#include <string>
#include <fstream>
#include <memory>
#include <exception>
class Person {
public :
Person (const std::string& pFirstname, const std::string& pLastname) : mFirstname (pFirstname), mLastname (pLastname) {
std::cout << "Person::Person" << std::endl;
}
~Person () {
std::cout << "Person::~Person" << std::endl;
}
void SetFirstname (const std::string& pFirstname) {
std::cout << "Person::SetFirstname" << std::endl;
mFirstname = pFirstname;
}
void SetLastname (const std::string& pLastname) {
std::cout << "Person::SetLastname" << std::endl;
mLastname = pLastname;
}
const std::string& GetFirstname (void) const {
std::cout << "Person::GetFirstname" << std::endl;
return mFirstname;
}
const std::string& GetLastname (void) const {
std::cout << "Person::GetLastname" << std::endl;
return mLastname;
}
void SaveToFile (const std::string& pFilename) throw (std::exception) {
std::cout << "Person::SaveToFile" << std::endl;
try {
std::fstream fileOut(pFilename, std::ios::out);
fileOut << "Firstname : " << GetFirstname () << std::endl
<< "Lastname : " << GetLastname () << std::endl;
fileOut.close ();
} catch (const std::exception& pException) {
// traitement si il y en a un.
throw pException;
}
}
};
int main (int argc, char **argv) {
try {
std::auto_ptr
person->SaveToFile ("Person.txt");
} catch (const std::exception& pException) {
std::cout << "Exception levée : " << pException.what () << std::endl;
}
return 0;
}
Je n'ai pas testé ni compilé, mais ne devrait pas poser de problèmes.
| Quote: |
Voici un exemple:
class monfichier
{
private:
char szMonNomDeFichier[50];
char szMonBuffer[1024];
Utiliser des std::string c'est un peu mieux.
public:
int setName(char szFileName[50])
{
this->szszMonNomDeFichier;
}
int getData(char szBuffer[1024])
{
this->szMonBuffer;
}
void ecritFichier()
{
// ici j'écrit dans le fichier avec szMonNomDeFichier et avec
// szMonNomDeFichier et j'écrit le buffer dans le fichier
}
};
int main()
int main (int argc, char **argv)
{
monfichier mySelf; // je crée un objet
// apres j'utilise ma classe pour travailler dans mon
// fichier avec les méthodes contenu dans celle-ci
}
|
Y a des erreurs dans ta signature.
Cela fonctionnerait si par exemple tu rajouterais "using namespace std" ou que tu préfixes "cout", "endl" avec "std::" ou même que tu fasses
#include <iostream.h> etc... ;-)
Bonne journée.
|
|
| Back to top |
|
 |
Penguin_X Guest
|
Posted: Wed Apr 13, 2005 10:54 am Post subject: Re: Les classes et les méthodes |
|
|
Stephane Wirtel wrote:
| Quote: | Penguin_X a écrit :
Salut. Si j'écrit un programme qui ecrit une string dans un fichier et
je voudrais faire ça avec des classes. Est-ce que je peut faire une
méthode qui écrit ma string(une variable privé que jaurais pris le
soin de définir avec un objet). Merci d'avance :)
oui.
#include <iostream
#include
#include
#include
#include
class Person {
public :
Person (const std::string& pFirstname, const std::string&
pLastname) : mFirstname (pFirstname), mLastname (pLastname) {
std::cout << "Person::Person" << std::endl;
}
~Person () {
std::cout << "Person::~Person" << std::endl;
}
void SetFirstname (const std::string& pFirstname) {
std::cout << "Person::SetFirstname" << std::endl;
mFirstname = pFirstname;
}
void SetLastname (const std::string& pLastname) {
std::cout << "Person::SetLastname" << std::endl;
mLastname = pLastname;
}
const std::string& GetFirstname (void) const {
std::cout << "Person::GetFirstname" << std::endl;
return mFirstname;
}
const std::string& GetLastname (void) const {
std::cout << "Person::GetLastname" << std::endl;
return mLastname;
}
void SaveToFile (const std::string& pFilename) throw
(std::exception) {
std::cout << "Person::SaveToFile" << std::endl;
try {
std::fstream fileOut(pFilename, std::ios::out);
fileOut << "Firstname : " << GetFirstname () << std::endl
"Lastname : " << GetLastname () << std::endl;
fileOut.close ();
} catch (const std::exception& pException) {
// traitement si il y en a un.
throw pException;
}
}
};
int main (int argc, char **argv) {
try {
std::auto_ptr
person->SaveToFile ("Person.txt");
} catch (const std::exception& pException) {
std::cout << "Exception levée : " << pException.what ()
std::endl;
}
return 0;
}
Je n'ai pas testé ni compilé, mais ne devrait pas poser de problèmes.
Voici un exemple:
class monfichier
{
private:
char szMonNomDeFichier[50];
char szMonBuffer[1024];
Utiliser des std::string c'est un peu mieux.
public:
int setName(char szFileName[50])
{
this->szszMonNomDeFichier;
}
int getData(char szBuffer[1024])
{
this->szMonBuffer;
}
void ecritFichier()
{
// ici j'écrit dans le fichier avec szMonNomDeFichier et avec
// szMonNomDeFichier et j'écrit le buffer dans le fichier
}
};
int main()
int main (int argc, char **argv)
{
monfichier mySelf; // je crée un objet
// apres j'utilise ma classe pour travailler dans mon
// fichier avec les méthodes contenu dans celle-ci
}
Y a des erreurs dans ta signature.
Cela fonctionnerait si par exemple tu rajouterais "using namespace std"
ou que tu préfixes "cout", "endl" avec "std::" ou même que tu fasses
#include <iostream.h> etc... ;-)
Bonne journée.
Merci ! Cet exemple vient de répondre à mes problèmes  |
--
#include <iostream>
#include <string>
int main(){
string myFavoriteOS = "Unix";
cout << "My favorite OS is "
<< myFavoriteOS << end;
return 0;
}
|
|
| Back to top |
|
 |
Ahmed MOHAMED ALI Guest
|
Posted: Wed Apr 13, 2005 11:01 am Post subject: Re: Les classes et les méthodes |
|
|
Stephane Wirtel wrote
| Quote: | int main (int argc, char **argv) {
try {
std::auto_ptr <Person> person (new Person ("Stephane", "Wirtel"));
person->SaveToFile ("Person.txt");
} catch (const std::exception& pException) {
std::cout << "Exception levée : " << pException.what () << std::endl;
}
return 0;
}
|
L'allocation avec new n'est pas nécessaire ici.
On pourrait écrire plus simplement :
int main (int argc, char **argv) {
...
Person person ("Stephane", "Wirtel");
person.SaveToFile ("Person.txt");
...
}
C'est plus rapide et ne nécessite pas de gestion mémoire.
Ahmed
"Stephane Wirtel"
| Quote: | Penguin_X a écrit :
Salut. Si j'écrit un programme qui ecrit une string dans un fichier et
je voudrais faire ça avec des classes. Est-ce que je peut faire une
méthode qui écrit ma string(une variable privé que jaurais pris le soin
de définir avec un objet). Merci d'avance
oui.
#include <iostream
#include
#include
#include
#include
class Person {
public :
Person (const std::string& pFirstname, const std::string& pLastname) :
mFirstname (pFirstname), mLastname (pLastname) {
std::cout << "Person::Person" << std::endl;
}
~Person () {
std::cout << "Person::~Person" << std::endl;
}
void SetFirstname (const std::string& pFirstname) {
std::cout << "Person::SetFirstname" << std::endl;
mFirstname = pFirstname;
}
void SetLastname (const std::string& pLastname) {
std::cout << "Person::SetLastname" << std::endl;
mLastname = pLastname;
}
const std::string& GetFirstname (void) const {
std::cout << "Person::GetFirstname" << std::endl;
return mFirstname;
}
const std::string& GetLastname (void) const {
std::cout << "Person::GetLastname" << std::endl;
return mLastname;
}
void SaveToFile (const std::string& pFilename) throw (std::exception) {
std::cout << "Person::SaveToFile" << std::endl;
try {
std::fstream fileOut(pFilename, std::ios::out);
fileOut << "Firstname : " << GetFirstname () << std::endl
"Lastname : " << GetLastname () << std::endl;
fileOut.close ();
} catch (const std::exception& pException) {
// traitement si il y en a un.
throw pException;
}
}
};
int main (int argc, char **argv) {
try {
std::auto_ptr
person->SaveToFile ("Person.txt");
} catch (const std::exception& pException) {
std::cout << "Exception levée : " << pException.what () << std::endl;
}
return 0;
}
Je n'ai pas testé ni compilé, mais ne devrait pas poser de problèmes.
Voici un exemple:
class monfichier
{
private:
char szMonNomDeFichier[50];
char szMonBuffer[1024];
Utiliser des std::string c'est un peu mieux.
public:
int setName(char szFileName[50])
{
this->szszMonNomDeFichier;
}
int getData(char szBuffer[1024])
{
this->szMonBuffer;
}
void ecritFichier()
{
// ici j'écrit dans le fichier avec szMonNomDeFichier et avec
// szMonNomDeFichier et j'écrit le buffer dans le fichier
}
};
int main()
int main (int argc, char **argv)
{
monfichier mySelf; // je crée un objet
// apres j'utilise ma classe pour travailler dans mon
// fichier avec les méthodes contenu dans celle-ci
}
Y a des erreurs dans ta signature.
Cela fonctionnerait si par exemple tu rajouterais "using namespace std" ou
que tu préfixes "cout", "endl" avec "std::" ou même que tu fasses
#include <iostream.h> etc... ;-)
Bonne journée.
|
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|