Sign In | Register Now About Bytes | Help | Site Map
Connecting Tech Pros Worldwide

Strong Type generic Composite class

Question posted by: ManicQin (Guest) on July 4th, 2008 11:15 AM
Hi,
I tried to code a -Strong typed generic composite class ...
i want to generalize the <function calland the <interfacethat the
compositor will implement
I tried writing it in many variations but none was suffice, or
working.
Any idea what should I look for?

Maybe a pseudo code will help explain:

//Pseudo code

template <class T , Function FunctinName>
class IComposite
{
void addnewItem(T* newItem) { m_list.push_back(newItem); } //
This line problematic too
void IterateThrough()
{
for (m_list::iterator iDx = m_list.begin;iDx != m_list.end(); iDx++)
{
(*iDx)->FunctionName(); //This line is the
main problem
}
}
vector<T*m_list;
}

class ICommand
{
virtual void work() = 0;
};

class worker : public ICommand
{
void work(){ cout << "BLA" << endl; }
};
class CommandComposite : public ICommand , public IComposite
<ICommand*,ICommand::*work>
{
void work()
{
IterateThrough();
}
};


Thanks
Ron AF Greve's Avatar
Ron AF Greve
Guest
n/a Posts
July 4th, 2008
11:45 AM
#2

Re: Strong Type generic Composite class
Hi,

Shouldn't it be

for (m_list::iterator iDx = m_list.begin();iDx != m_list.end(); iDx++)

--------------------------------------|



Regards, Ron AF Greve

http://www.InformationSuperHighway.eu

"ManicQin" <ManicQin@gmail.comwrote in message
news:b070ee82-1f22-46e9-b0df-1c56946bb959@s33g2000pri.googlegroups.com...
Quote:
Hi,
I tried to code a -Strong typed generic composite class ...
i want to generalize the <function calland the <interfacethat the
compositor will implement
I tried writing it in many variations but none was suffice, or
working.
Any idea what should I look for?
>
Maybe a pseudo code will help explain:
>
//Pseudo code
>
template <class T , Function FunctinName>
class IComposite
{
void addnewItem(T* newItem) { m_list.push_back(newItem); } //
This line problematic too
void IterateThrough()
{
for (m_list::iterator iDx = m_list.begin;iDx != m_list.end(); iDx++)
{
(*iDx)->FunctionName(); //This line is the
main problem
}
}
vector<T*m_list;
}
>
class ICommand
{
virtual void work() = 0;
};
>
class worker : public ICommand
{
void work(){ cout << "BLA" << endl; }
};
class CommandComposite : public ICommand , public IComposite
<ICommand*,ICommand::*work>
{
void work()
{
IterateThrough();
}
};
>
>
Thanks




Kai-Uwe Bux's Avatar
Kai-Uwe Bux
Guest
n/a Posts
July 4th, 2008
01:55 PM
#3

Re: Strong Type generic Composite class
ManicQin wrote:
Quote:
Hi,
I tried to code a -Strong typed generic composite class ...
i want to generalize the <function calland the <interfacethat the
compositor will implement
I tried writing it in many variations but none was suffice, or
working.
Any idea what should I look for?


I don't even have an idea what you are trying to accomplish.

Quote:
Maybe a pseudo code will help explain:
>
//Pseudo code
>
template <class T , Function FunctinName>
class IComposite
{
void addnewItem(T* newItem) { m_list.push_back(newItem); } //
This line problematic too
void IterateThrough()
{
for (m_list::iterator iDx = m_list.begin;iDx != m_list.end(); iDx++)
{
(*iDx)->FunctionName(); //This line is the
main problem


And what is the problem?
Quote:
}
}
vector<T*m_list;
}


The above amounts to nothing more than calling a certain member function on
all items in a list of T*. If have no idea why you would call that a
composition class.
Quote:
class ICommand
{
virtual void work() = 0;
};
>
class worker : public ICommand
{
void work(){ cout << "BLA" << endl; }
};
class CommandComposite : public ICommand , public IComposite
<ICommand*,ICommand::*work>
{
void work()
{
IterateThrough();
}
};



Nope. Pseudocode did not help either.

Maybe, if you would show a use case, some piece of possible client code
together with an explanation of the resulting behavior, it might become
more clear what you are after.



Best

Kai-Uwe Bux

 
Not the answer you were looking for? Post your question . . .
189,071 Experts ready to help you find a solution.
Sign up for a free account, or Login (if you're already a member).

Latest Articles: Read & Comment
  • Didn't find the answer you were looking for?
    Post Your Question
  • Top Community Contributors