Re: create an object with variable CLASS

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Dear Axel, 
given code doesn't work.
On Mon, 2009-10-26 at 17:32 +0100, Axel Freyn wrote:
> 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
> > 



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux