Raga guardate un po' questo codice:
base.h
codice:
#ifndef _BASE_
#define _BASE_
#include <string>
class base
{
private:
char c[10];
char* c2;
std::string stringa;
public:
base();
~base();
void setC(char[]);
void setC2(char*);
void setStringa(std::string);
char getC();
char* getC2();
std::string getStringa();
};
#endif // _BASE_
base.cpp
codice:
#include "base.h"
#include <string>
using namespace std;
base::base()
{
strcpy(c, "c1");
c2 = "c2";
stringa = "stringa";
}
base::~base(){};
void base::setC(char c1[10])
{
strcpy(c,c1);
}
void base::setC2(char* c)
{
c2 = c;
}
void base::setStringa(string s)
{
stringa = s;
}
char base::getC()
{
char tmp[10];
strcpy(tmp,c);
return tmp[10];
}
char* base::getC2()
{
return c2;
}
string base::getStringa()
{
return stringa;
}
il problema è il metodo setC, infatti se nel main.cpp scrivo:
codice:
#include "base.h"
#include <iostream.h>
#include <string>
void main()
{
base a;
a.setStringa("stringa");
a.setC("c1");
a.setC2("c2");
cout << "a.c:" << a.getC() << endl;
cout << "a.c2:" << a.getC2() << endl;
cout << "a.stringa:" << a.getStringa().c_str() << endl;
}
come risultato ho:
a.ccarattere strano);
a.c2: c2
a.stringa: stringa
Che errore ho fatto secondo voi?