01/01/10 18:39
matteog
salvè
stò cercando di creare il costruttore della classe stringa sotto posto il codice:
l'errore che mi dà il compilatore non è comprensibile nel senso che non mi da un errore ben preciso credo dipenda dal fatto che devo aver sbagliato qualcosa di concettuale.
class stringa
{
stringa(char *str1)
{
str1=new char;
}
};
int main()
{
//creo due vettori di char
stringa str1,str2;//credo non vada bene qui perche sembra che non riconosca l'oggetto che gli viene passato e quindi non costruisca mi sapete aiutare?
cout<<"inserire prima stringa"<<endl;
gets(str1);
cout<<"inserire la seconda stringa"<<endl;
gets(str2);
int m=strlen(str1);
int n=strlen(str2);
char *str3;
str3=new char;
int fin=m+n+1;
int k=0;
cout<<str3;
system("pause");
}
in più mi sono anche accorto che non mi riconosce le funzioni strlen di conseguenza, vi prego aiutatemi!!
Ultima modifica effettuata da matteog 01/01/10 18:42
aaa
01/01/10 20:10
Ho letto il tuo sorgente, e non ho capitoquale sia il suo scopo, ma ho notato che:
1- Il costruttore della classe "stringa" è "private", qindi non visibile all' esterno della classe.
2- Per diciarare un oggetto "stringa" è necessario passare una stringha
(es.: stringa str1("frase"
, non stringa str1)
3- "str1" e "str2" sono oggetti "stringa", non stringhe, quindi
l' istruzione "gets(str2);" non ha senso.
Ultima modifica effettuata da 01/01/10 20:16
01/01/10 20:12
matteog
ok allora lo scopo è creare un costruttore per le strinche senza utilizare la libreria #include<string>
per il discorso che hai trattato te è proprio quello il problema non sò come creare la stringa perchè se uso il char* str; funziona però mediante quel costruttore no!
aaa
01/01/10 20:27
matteog
la conosco ma non posso usarla perchè è un compito per le vacanze e il mio professore ha detto che non possiamo usare quella libreria.Il mio solo problema è il costruttore non sò come modificalo per costruire ciascuna stringa che in teoria dovrebbe essere un char *str1;
io vorrei fare in modo che mediante il costruttore la str1 diventasse una stringa dinamica qualche consiglio?
aaa
01/01/10 22:05
GuglielmoS
Postato originariamente da matteog:
la conosco ma non posso usarla perchè è un compito per le vacanze e il mio professore ha detto che non possiamo usare quella libreria.Il mio solo problema è il costruttore non sò come modificalo per costruire ciascuna stringa che in teoria dovrebbe essere un char *str1;
io vorrei fare in modo che mediante il costruttore la str1 diventasse una stringa dinamica qualche consiglio?
Devi giocare con la gestione dinamica della memoria.
Quindi per esempio avrai:
#include <cstring>
class stringa
{
private:
char *str;
int len;
public:
stringa() {
str = (char*)malloc(1);
str[0] = 'Postato originariamente da matteog:
la conosco ma non posso usarla perchè è un compito per le vacanze e il mio professore ha detto che non possiamo usare quella libreria.Il mio solo problema è il costruttore non sò come modificalo per costruire ciascuna stringa che in teoria dovrebbe essere un char *str1;
io vorrei fare in modo che mediante il costruttore la str1 diventasse una stringa dinamica qualche consiglio?
Devi giocare con la gestione dinamica della memoria.
Quindi per esempio avrai:
#include <cstring>
class stringa
{
private:
char *str;
int len;
public:
stringa() {
str = (char*)malloc(1);
str[0] = '{parsed_message}';
len = 1;
}
stringa(char *str1)
{
str = strdup(str1);
len = strlen(str);
// Se non puoi usare le funzioni della cstring ricreale te che non sono difficilissime da implementare
}
char chartAt(int pos) {
if (pos > 0 || pos < len)
return str[pos];
}
void append(char ch) {
len++;
str = (char*)realloc(str, len);
str[len-2] = ch;
str[len-1] = '{parsed_message}';
}
int length() {
return length;
}
char *getString() {
return str;
}
};
Naturalmente questo è solo un esempio, poi sta a te decidere cosa mettere e come modificare il tutto.
Ciao GuglielmoS';
len = 1;
}
stringa(char *str1)
{
str = strdup(str1);
len = strlen(str);
// Se non puoi usare le funzioni della cstring ricreale te che non sono difficilissime da implementare
}
char chartAt(int pos) {
if (pos > 0 || pos < len)
return str[pos];
}
void append(char ch) {
len++;
str = (char*)realloc(str, len);
str[len-2] = ch;
str[len-1] = 'Postato originariamente da matteog:
la conosco ma non posso usarla perchè è un compito per le vacanze e il mio professore ha detto che non possiamo usare quella libreria.Il mio solo problema è il costruttore non sò come modificalo per costruire ciascuna stringa che in teoria dovrebbe essere un char *str1;
io vorrei fare in modo che mediante il costruttore la str1 diventasse una stringa dinamica qualche consiglio?
Devi giocare con la gestione dinamica della memoria.
Quindi per esempio avrai:
#include <cstring>
class stringa
{
private:
char *str;
int len;
public:
stringa() {
str = (char*)malloc(1);
str[0] = '{parsed_message}';
len = 1;
}
stringa(char *str1)
{
str = strdup(str1);
len = strlen(str);
// Se non puoi usare le funzioni della cstring ricreale te che non sono difficilissime da implementare
}
char chartAt(int pos) {
if (pos > 0 || pos < len)
return str[pos];
}
void append(char ch) {
len++;
str = (char*)realloc(str, len);
str[len-2] = ch;
str[len-1] = '{parsed_message}';
}
int length() {
return length;
}
char *getString() {
return str;
}
};
Naturalmente questo è solo un esempio, poi sta a te decidere cosa mettere e come modificare il tutto.
Ciao GuglielmoS';
}
int length() {
return length;
}
char *getString() {
return str;
}
};
Naturalmente questo è solo un esempio, poi sta a te decidere cosa mettere e come modificare il tutto.
Ciao GuglielmoS
Ultima modifica effettuata da GuglielmoS 01/01/10 22:08
aaa