Hi Mohsen, On Tue, Oct 27, 2009 at 07:40:45AM +0330, Mohsen Pahlevanzadeh wrote: > Suppose following code: > //////////// > char *var; > var = "class1" > //////////// > So, I don't know name of class1, but i have varibale var.How can i > create an object from class1 by this variavble? Sorry, now I understand the question:-) Well - I think the best way is the one proposed by Andrew: You first have to some kind of dictionary, which maps the names to the classes - this dictionary can't be created automatically in C++, but you have to write it yourself. And in addition, you have to supply a common base-class for all your classes. The following example (untested...) should explain the procedure: #include <iostream> #include <cstring> #include <cstdlib> class Base{ public: virtual void DoSomething() = 0; }; class A:public Base{ public: void DoSomething(){std::cout << "A" << std::endl;} }; class B:public Base{ public: void DoSomething(){std::cout << "B" << std::endl;} }; Base *Create(const char *name){ if (strcmp(name, "A")==0) return new A; if (strcmp(name, "B")==0) return new B; exit(1); } int main(){ Base *base; base = Create("A"); base->DoSomething(); delete base; base = Create("B"); base->DoSomething(); delete base; } Axel > > > On Mon, 2009-10-26 at 10:55 +0100, Axel Freyn wrote: > > Hi, > > On Tue, Oct 27, 2009 at 12:31:05AM +0330, Mohsen Pahlevanzadeh wrote: > > > Oh, I forgot that i say i need to variable name of objects.same classes. > > > Therefor i need to variable name of objects & variable name of classes. > > > On Mon, 2009-10-26 at 23:42 +0330, Mohsen Pahlevanzadeh wrote: > > > > Dear all, > > > > We know that we can create an object with following code: > > > > ///////////////////////////////////////////////// > > > > class_name *object_name = new() class_name; > > > > /////////////////////////////////////////////// > > > > So, i have a class pool,I wanna create Object with a variable name that > > > > variable is my class.Same: > > > > var *obj = new() var; > > > > var is a variable that contains a my class's name. > > > > How can i implement it? > > Well, I'm not sure I understand correctly, but I think the solution is > > derivation: > > class Base{}; > > class A:public Base{}; > > class B:public Base{}; > > ... > > > > > > Then you can do: > > Base *var; > > var = new A; > > delete var; > > var = new B; > > delete B; > > > > All functions, which you want to call by accessing "var" (e.g. > > var->Function()) have to be defined as virtual function in class Base. > > > > Does that solve your problem? > > > > Axel >