c++ - Template and using (#define) in class constructor -
i've implemented stack process.this program supposed work same real stack memory.moreover i'm trying use template , make the program more generic. i've got problem in using #define default_size 10 argument of class constructor.
first of when put default_size in prototype of constructor goes smoothly:
#define default_size 10 template<typename t> class stack { public: stack(int size=default_size); private: t *elements; int size; int count; }; template<typename t> stack<t>::stack(int s) { cout << "--constructor called\n"; size = s; elements = new t[size]; count = 0; } but when put default_size in outline definition of class constructor error: no appropriate default constructor available
#define default_size 10 template<typename t> class stack { public: stack(int size); private: t *elements; int size; int count; }; template<typename t> stack<t>::stack(int s=default_size) { cout << "--constructor called\n"; size = s; elements = new t[size]; count = 0; } finally main of program:
int main() { stack<int> u; u.push(4); } my question not "why can templates implemented in header file?" problem place use default_size.
i suppose, problem in difference of template declaration:
stack(int size); and template definition:
stack<t>::stack(int s=default_size) { ... } default values must in declaration part, , if method signature in definition different declaration (you add default_size in definition) compiler not sure write same constructor. note, default_size applied when s value not given constructor, definition work default constructor, declaration constructor 1 parameter.
Comments
Post a Comment