Тема: ООП operator і перегрузка функцій операторів, шаблони template, дес...
Вирішив написати невеликий клас (в навчальних цілях, я розумію що він не потрібний) який полегшить роботу з char-ом, в мене виникли такі питання
1) Я хочу щоб мій клас при додаванні рядків повертав char я так і зробив, але якщо додати 3 рядки типу sChar він не працює. Я зробив перегрузку (я не знаю як правильно сказати перегрузка функцій операторів ?)
char* operator+(sChar ch);
char* operator+(char *ch);
але все одно не робить, no operator "+" matches these operands (80)
2) Я можу зробити так щоб cout виводив sChar ? (без допомоги сторонніх функцій, в мене вже є метод sChToChar)
3) В моєму класі можна десь використати шаблони template ? (я думав в operator, але як)
4) Я в operator+ виділяю динамічно пам'ять мені потрібно її очищувати (delete []) ? (якщо так, то як це зробити ?) моєму класі потрібний деструктор ?
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
class sChar
{
private:
char* str;
public:
sChar(char* ch = "\n") : str(ch) {};//конструктор
char* operator+(sChar ch);//додати sChar + sChar
char* operator+(char *ch);//додати sChar + char
char* sChToChar();//sChar перетворити в char
};
sChar CharTosCh(char *ch)//char перетворити в sChar
{
return (sChar)ch;
}
char* sChToChar(sChar ch)//sChar перетворити в char
{
return ch.sChToChar();
}
char* sChar::sChToChar()//sChar перетворити в char
{
return this->str;
}
char* sChar::operator+(char *ch)//додати sChar + char
{
int size = strlen(str) + strlen(ch);
char *cpy = new char[size];
strcpy(cpy, str);
strcat(cpy, ch);
return cpy;
}
char* sChar::operator+(sChar ch)//додати sChar + sChar
{
int size = strlen(str) + strlen(ch.str);
char *cpy = new char[size];
strcpy(cpy, str);
strcat(cpy, ch.str);
return cpy;
}
int main()
{
//створюємо рядок
sChar g = "string";
cout << g.sChToChar();
//додаємо рядки
sChar var1 = "C", var2 = "++";
cout << "\n" << var1 + var2;
//додаємо декілька рядків
cout << CharTosCh((sChar)"\n1" + (sChar)" 2 ") + "3";
//невдала спроба
//cout << (sChar)"1" + (sChar)" 2 " + (sChar)"3";
//як я хочу зробити
cout << (string)"\n1" + (string)" 2 " + (string)"3";
getch();
return 0;
}