Witam.
jestem dziewczyną, co gorsza studiuję informatykę, do pewnego momentu z programowaniem nie miałam większych problemów, niestety mam taką sieczkę w głowie że sklejam kod z gotowców bo z zajęć zbyt wiele nie wynosimy.
Moim zadaniem było napisać (tzn. ulepszyć klasę z materiałów wykładowych o wyjątki ale mniej nerwów stracę kombinując sama niż poprawiając klasę w której za każdą funkcją widzę "};") klasę mystring z wyjątkami. Klasa już jest, ale podczas kompilacji napotykam problem, kompilator oczekuje czegoś przed ")" za nazwą klasy. [4 16 C:\Documents and Settings...\Pulpit\mystring.cpp [Error] expected unqualified-id before ')' token ]
Ponadto proszę o rzucenie okiem i rady stricte merytoryczne - chciałabym pisać i rozumieć co piszę a nie pisać i kombinować.
oto klasa (mystring.cpp):
#include <stdio.h>
#include <string.h>
class mystring(){
private:
char *str;
int dlugosc(const char *src)
{
int size=0;
while(*src++)
size++;
return size;
}
mystring exception();
public:
mystring()
{
str=NULL;
}
~mystring()
{
delete []this->str;
}
mystring(const char *s)
{
if(s)
{
str = new char[dlugosc(s)+1];
copystr(str,s);
}
else
{
mystring s("Zerowy ciag!");
throw s;
}
}
mystring(const mystring &s)
{
if(s.str)
{
str=new char[dlugosc(s.str)+1];
copystr(mojstr,s.str);
}
}
&mystring operator+ (mystring &s)
{
char *tab=new char[dlugosc(this->str)+dlugosc(s.str)+1];
strcpy(tab,this->str);
unsigned int i=dlugosc(tab);
unsigned int j=0;
for(j=0;j<dlugosc(s.str);j++)
tab[i++]=s.str[j];
tab[i]=0;
delete [] str;
this->str=tab;
return *this;
}
&mystring operator= (mystring &s)
{
delete []str;
int i=0;
int j=0;
char *tab=new char[dlugosc(s.str)+1];
for(j=0;j<dlugosc(s.mojstr);j++)
tab[i++]=s.mojstr[j];
tab[i]=0;
this->mojstr=tab;
return *this;
}
&mystring operator+= (mystring &s)
{
return *this=*this+s;
}
unsigned int mystring::length()
{
return dlugosc(this->str);
}
};
Jeśli jest konieczny to także main.cpp:
#include <iostream>
#include <string.h>
#include <stdio.h>
#include "mystring.cpp"
using namespace std;
int main(){
mystring a("ala");
mystring b("ma");
mystring c("a");
c=a;
c.print();
cin>>c;
cout<<c<<endl;
cout<<c.length();
getchar();
return 0;
}
Pozdrawiam i przepraszam za psucie nerwów w pierwszy dzień roku. :)
Czy ktoś może mi zaprezentować na przykładzie jednej funkcji jak poprawnie wrzucić do niej wyjątek?