wrote in the view the obolvenously working code, but it does not work (
Help!
main.cpp:
# include & lt; iostream & gt;
#Include & lt; String & GT;
#Include "Classes / Dinamic / Dinamic.h"
#Include "Classes / Person / Person.h"
Using Namespace STD;
#Define Return Return 0
INT MAIN ()
{
SetLocale (LC_ALL, "RU");
CIN.EXCEPTIONS (iOS :: FAILBIT | iOS :: Badbit);
Dinamic & lt; String & GT; Texts_;
Texts_.push_back ("Hi, you have a task");
Texts_.push_back ("Share it and get a reward!");
Person L ("Crocodile");
L.Speak ("Hello");
Return;
}
dinamic.cpp:
# include & lt; iostream & gt;
#Include & lt; String & GT;
#Include "dinamic.h"
Using Namespace STD;
// Constructor.
Template & lt; Class T & GT; Dinamic & LT; T & GT; :: Dinamic ()
{
SIZE_ = 0;
__ARRAY = NEW T [SIZE_]; // CREATE EMPTY ARRAY
}
// Destructor
TEMPLATE & LT; Class T & GT; Dinamic & LT; T & GT; :: ~ Dinamic ()
{
DELETE [] __ARRAY; // Clean Memory.
}
// Method Push Back
TEMPLATE & LT; Class T & GT; Void Dinamic & LT; T & GT; :: PUSH_BACK (Const T & Amp; Value)
{
T * array_buffer = new t [(this- & gt; size _) + 1]; // CREATE NEW ARRAY
for (int i = 0; i & lt; this- & gt; size_; i ++)
{
array_buffer [i] = __array [i];
}
array_buffer [this- & gt; size_] = value; // Add New Element
Size _ ++;
DELETE [] __ARRAY; // Clean Old Array
__ARRAY = Array_Buffer; // Update Pointer.
}
// Method Print All Array
TEMPLATE & LT; Class T & GT; Void Dinamic & LT; T & GT; :: Printallementinarray (Const String & Amp; Separation)
{
for (int i = 0; i & lt; this- & gt; size_; i ++)
{
if (i == (this- & gt; size_-1)) // if Final Iteration
{
cout & lt; & lt; __ array [i] & lt; & lt; endl;
Break;
}
COUT & LT; & lt; __ array [i] & lt; & lt; separation;
}
}
// Method Pop Back
TEMPLATE & LT; Class T & GT; Void Dinamic & LT; T & GT; :: POP_BACK ()
{
Size _--;
T * Array_Buffer = New T [this- & gt; size_];
for (int i = 0; i & lt; this- & gt; size_; i ++)
{
array_buffer [i] = __array [i];
}
DELETE [] __ARRAY;
__ARRAY = Array_Buffer;
}
// Return Element by Index
TEMPLATE & LT; CLASS T & GT; T &M; DINAMIC & LT; T & GT; :: ElementByindex (Const Int & amp; index)
{
RETURN __ARRAY [INDEX];
}
// GET SIZE.
TEMPLATE & LT; Class T & GT; int & amp; Dinamic & LT; T & GT; :: Size ()
{
RETURN SIZE_;
}
// Is Empty?
TEMPLATE & LT; Class T & GT; BOOL DINAMIC & LT; T & GT; :: Empty ()
{
IF (this- & gt; size_ & gt; 0) {
RETURN FALSE;
}
ELSE {
RETURN TRUE;
}
}
// Resize Array.
TEMPLATE & LT; Class T & GT; Void Dinamic & LT; T & GT; :: Resize (Const Int & amp; New_Size, Const T & Amp; Values)
{
T * array_buffer = new t [new_size];
for (int i = 0; i & lt; this- & gt; size_; i ++)
{
array_buffer [i] = __ array [i];
}
for (int i = (this- & gt; size_); i & lt; new_size; i ++)
{
array_buffer [i] = values;
}
this- & gt; size_ = new_size;
DELETE [] __ARRAY;
__ARRAY = Array_Buffer;
}
dinamic.h:
# ifndef _is_guard_
#Define _is_guard_
#Include & lt; String & GT;
#Include & lt; iostream & gt;
Using Namespace STD;
TEMPLATE & LT; Class T & GT;
Class Dinamic
{
Public:
Dinamic ();
~ Dinamic ();
Void Push_back (Const T & AMP; Value);
void printallementinarray (const string & amp; separation = "\ n");
void pop_back ();
T & amp; ElementByindex (Const int & amp; index);
int & amp; Size ();
BOOL EMPTY ();
Void Resize (Const int & amp; new_size, const t & amp; values = 0);
Private:
int size_; // Size Array.
T * __ARRAY; // Main Array.
};
#endif // _is_guard_
person.cpp:
# include & lt; iostream & gt;
#Include & lt; String & GT;
#Include "../dinamic/dinamic.h"
#Include "person.h"
Using Namespace STD;
Person :: Person (String Name)
{
this- & gt; name = name;
}
Void Person :: Speak (Const String & Amp; Text)
{
COUT & LT; & lt; Name & lt; & lt; ":" & lt; & lt; Text & lt; & lt; Endl;
}
TEMPLATE & LT; Class T & GT; Void Person :: Give_Quest (
Dinamic & lt; String & GT; * Texts,
Const String & Amp; Quest,
Const T & AMP; Answer.
)
{
For (int i = 0; i & lt; texts- & gt; size (); i ++)
{
COUT & LT; & LT; Texts- & gt; elementByindex (I) & lt; & lt; Endl;
}
COUT & LT; & LT; QUEST & LT; & lt; Endl;
String Buffer;
CIN & GT; & GT; Buffer;
If (Buffer == To_String (Answer))
{
COUT & LT; & LT; "Right!" & lt; & lt; endl;
}
ELSE.
{
COUT & LT; & LT; "Invalid!" & lt; & lt; Endl;
}
}
person.h:
# ifndef _is_guard_penson_
#Define _is_guard_person_
#Include & lt; iostream & gt;
#Include & lt; String & GT;
#Include "../dinamic/dinamic.h"
Using Namespace STD;
Class Person
{
Public:
// Constructor.
Person (String);
Void Speak (Const String & Amp;);
TEMPLATE & LT; Class T & GT; Void Give_Quest (Dinamic & LT; String & GT; *, Const String & Amp;, Const T & AMP;);
Private:
String Name;
};
#endif // _ is_guard_person_
Compile through G ++ Such a command:
clear;
G ++ main.cpp Classes / Dinamic / Dinamic.cpp Classes / Person / Person.cpp -O Programm;
./Programm.
Project structure corresponds!
Answer 1, Authority 100%
You have a code describing the work of the template, should be in one broadcast unit. In other words, you need all the implementation of methods, etc. To transfer to the corresponding .h
files.