Oppure

Loading
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:25
Usa #include<string>!!

Te lo consiglio cladamente!

Prova questo programma:
#include <iostream>
#include <string>

using namespace std;

int main() 
{ 
    //creo due vettori di char 
    string a, b, c;
    a="Hello";
    b=" word!";
    c=a+b;
    cout<<c<<endl;
    system("pause");
    return 0;
} 
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
02/01/10 6:37
matteog
ok adesso ho capito tanks mi mancava una cosanel costruttore:k:
aaa