Даны: 1)объект символ, умеющий печатать свое значение и отвечать на запрос о значении своего символьного поля. 
2)Объект «строка», как массив из 15 объектов-символов, умеющий выводить на печать значение своих элементов,  удалять символ по номеру, удалять символ по значению, возвра-щать номер символа, начиная с которого  некоторая  подстрока или символ входят в строку.
реализация классов:
#include <iostream.h>
#include <string.h>
class TSymbol
{ private:
	     char Ref;
  public:
	 TSymbol(char ref);
       //	 ~TSlovo(void) {  delete Ref;}
	 char GetCh(void);
	 void Print(void);
};
char TSymbol::GetCh(void)
{    return Ref;}
TSymbol::TSymbol(char ref)
{ Ref=ref;}
void TSymbol::Print(void)
{ cout<<Ref;}
class TString
{   private:
       TSymbol ** smb;
 public:
 void TString::Print(void)
 {
  for (int i=0;i<15;i++)
    smb[i]->Print();
 }
 TString::TString(char ref[15])
  {
    smb=new (TSymbol *);
   for (int i=0;i<15;i++)
     smb[i]=new TSymbol(ref[i]);
  }
};
В этой задаче по условию надо создать объект строка с массивом из объектов другого класса (символ)
Как я понимаю при этом класс TString при создании (в конструкторе) должен иметь внутри себя массив объектов TSymbol . 
Поэтому конструктор класса TString одновременно пытается создать 15 объектов класса TSymbol. У меня это проходит 
без ошибки только при коде
smb=new (TSymbol *);
   for (int i=0;i<15;i++)
     smb[i]=new TSymbol(ref[i]);
(было искушение 1 оператор заменить на smb=new (TSymbol **)[15] но  это на следующем операторе
 валит программу )
 вариант выше  проходит. Но при вызове печати str.Print() в демо-проге вместо 1-х 3 символов идет мусор, остальные печатаются. В чем дело?