Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > Templates and Typedefs

Reply
Thread Tools

Templates and Typedefs

 
 
dwrayment
Guest
Posts: n/a
 
      08-12-2003
here is an example of what im trying to do in the most basic form,

template<class T, class I> class A : public T {

typedef struct {I i; T t;} e;
// functions not that important, not the issue
}

struct {... } typea;
struct {... } typeb;
A<type,int> _a;
A<typea,int> _b;



Problem: when instantiating _b, entry.T is of the form typea
and not typeb. so when i try doing something like
entry.T = (T &)(*this) it produces cannot convert
from typea to typeb and vice versa.


I have also tried just declaring struct e without typedef and the same thing
happens. I think the solution involves the keyword
typename but Im having trouble figureing it out.

If anyone can help id appreciate it. Thanks






 
Reply With Quote
 
 
 
 
Victor Bazarov
Guest
Posts: n/a
 
      08-12-2003
"dwrayment" <(E-Mail Removed)> wrote...
> here is an example of what im trying to do in the most basic form,
>
> template<class T, class I> class A : public T {
>
> typedef struct {I i; T t;} e;
> // functions not that important, not the issue
> }
>
> struct {... } typea;
> struct {... } typeb;


Did you mean to write

struct typea {};
struct typeb {};

???

> A<type,int> _a;


What's "type"? Did you mean "typeb"?

> A<typea,int> _b;
>
>
>
> Problem: when instantiating _b, entry.T is of the form typea


What's "entry"? Did you mean "e"? And there is no e.T. There is
only e.t. Did you mean "e.t" instead of "entry.T"?

> and not typeb. so when i try doing something like
> entry.T = (T &)(*this) it produces cannot convert
> from typea to typeb and vice versa.


Why would you do that?

> I have also tried just declaring struct e without typedef and the same

thing
> happens. I think the solution involves the keyword
> typename but Im having trouble figureing it out.
>
> If anyone can help id appreciate it. Thanks


You'll have to excuse me, I am trying to get all the ducks in a row
here. What are you trying to do, actually?

This (irrelevant things removed):

template<class T, class I> struct A : public T
{
struct
{
I i;
T t;
} entry;

A() { entry.t = *this; }
};

struct typea {};

int main()
{
A<typea, int> b;
}


compiles OK (and is valid code).

Victor


 
Reply With Quote
 
 
 
 
dwrayment
Guest
Posts: n/a
 
      08-12-2003

fist off im using pseudocode so if its not "technically" right is not
supposed to be it only supposed to show the meaning. aka e.T

However, i did make a small typeo

A<type,int> _a; should be A<typea,int> _a;
and
A<typea,int> _b; should be A<typeb,int> _b;

and yes its compiles fine in your example because theres only one
instatiation of the template class. it works fine for me also with one
case.

derive another template class using a different type as T.
(hence the meaning of typea and typeb, which are preferabley complex and
not just double or char etc)

Aka

> int main()
> {
> A<typea, int> _a;

A<typeb, int> _b;

//and make a member function that attempts to copy
// ie class member funct copy(T &)
// { e _entry;
// read(_entry) <-psuedocode meaning get
// some value for _entry
// (T &)*this) = _entry.T; <- psuedocode}

// Finally, make sure to call the function in main.

_a.copy(.typea.); <-psuedocode
_b.copy(.typeb.);

> }
>


lastly why isnt iimportant.



"Victor Bazarov" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> "dwrayment" <(E-Mail Removed)> wrote...
> > here is an example of what im trying to do in the most basic form,
> >
> > template<class T, class I> class A : public T {
> >
> > typedef struct {I i; T t;} e;
> > // functions not that important, not the issue
> > }
> >
> > struct {... } typea;
> > struct {... } typeb;

>
> Did you mean to write
>
> struct typea {};
> struct typeb {};
>
> ???
>
> > A<type,int> _a;

>
> What's "type"? Did you mean "typeb"?
>
> > A<typea,int> _b;
> >
> >
> >
> > Problem: when instantiating _b, entry.T is of the form typea

>
> What's "entry"? Did you mean "e"? And there is no e.T. There is
> only e.t. Did you mean "e.t" instead of "entry.T"?
>
> > and not typeb. so when i try doing something like
> > entry.T = (T &)(*this) it produces cannot convert
> > from typea to typeb and vice versa.

>
> Why would you do that?
>
> > I have also tried just declaring struct e without typedef and the same

> thing
> > happens. I think the solution involves the keyword
> > typename but Im having trouble figureing it out.
> >
> > If anyone can help id appreciate it. Thanks

>
> You'll have to excuse me, I am trying to get all the ducks in a row
> here. What are you trying to do, actually?
>
> This (irrelevant things removed):
>
> template<class T, class I> struct A : public T
> {
> struct
> {
> I i;
> T t;
> } entry;
>
> A() { entry.t = *this; }
> };
>
> struct typea {};
>
> int main()
> {
> A<typea, int> b;
> }
>
>
> compiles OK (and is valid code).
>
> Victor
>
>



 
Reply With Quote
 
Victor Bazarov
Guest
Posts: n/a
 
      08-13-2003
"dwrayment" <(E-Mail Removed)> wrote...
>
> fist off im using pseudocode so if its not "technically" right is not
> supposed to be it only supposed to show the meaning. aka e.T [...]


Please read FAQ 5.8. You can find FAQ list here:
http://www.parashift.com/c++-faq-lite/

Victor


 
Reply With Quote
 
dwrayment
Guest
Posts: n/a
 
      08-13-2003
i appreciate your trying to help but nothing at that site is useful to what
i want to do. in the meantime i have come up with a "it works" solution
that i am "content with" so i am not rushed to find an answer. but
curiostity kills that cat, so i will work on it evenetuallly. i hate not
being able to do something.


"Victor Bazarov" <(E-Mail Removed)> wrote in message
news:sdi_a.90819$(E-Mail Removed) et...
> "dwrayment" <(E-Mail Removed)> wrote...
> >
> > fist off im using pseudocode so if its not "technically" right is not
> > supposed to be it only supposed to show the meaning. aka e.T [...]

>
> Please read FAQ 5.8. You can find FAQ list here:
> http://www.parashift.com/c++-faq-lite/
>
> Victor
>
>



 
Reply With Quote
 
dwrayment
Guest
Posts: n/a
 
      08-14-2003
lmao. you choose not to use psuedocode because it says so in faq. tff






"Sam Holden" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed).. .
> On Wed, 13 Aug 2003 05:34:42 GMT, dwrayment <(E-Mail Removed)> wrote:
> > i appreciate your trying to help but nothing at that site is useful to

what
> > i want to do. in the meantime i have come up with a "it works"

solution
> > that i am "content with" so i am not rushed to find an answer. but
> > curiostity kills that cat, so i will work on it evenetuallly. i hate

not
> > being able to do something.

>
> Other than the specific FAQ you were directed to that tells you not
> to post "pseudocode" to "show the meaning".
>
> And if you had read FAQ 5.4 you (assuming you aren't antisocial) wouldn't
> have done the bit below:
>
> > "Victor Bazarov" <(E-Mail Removed)> wrote in message
> > news:sdi_a.90819$(E-Mail Removed) et...
> >> "dwrayment" <(E-Mail Removed)> wrote...
> >> >
> >> > fist off im using pseudocode so if its not "technically" right is not
> >> > supposed to be it only supposed to show the meaning. aka e.T [...]
> >>
> >> Please read FAQ 5.8. You can find FAQ list here:
> >> http://www.parashift.com/c++-faq-lite/
> >>
> >> Victor
> >>
> >>

>
> Of course you are free to ignore the etiquette common in places
> you visit, but it generally means people are less helpful.
>
> --
> Sam Holden
>



 
Reply With Quote
 
Sam Holden
Guest
Posts: n/a
 
      08-14-2003
On Thu, 14 Aug 2003 04:18:36 GMT, dwrayment <(E-Mail Removed)> wrote:
> lmao. you choose not to use psuedocode because it says so in faq. tff


If I wanted to maximise my chances of getting useful help from
others I would, yes.

If I just wanted to get myself killfiled by those who might be able
to help, then no I wouldn't.

[snip full quote]

--
Sam Holden

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
typedefs and templates kf3cr C++ 3 10-06-2009 08:24 AM
Question about Pointer to Member Typedefs inside templates wbasheer@gmail.com C++ 1 01-25-2008 07:18 PM
how to Specializations of function Templates or Overloading Function templates with Templates ? recover C++ 2 07-25-2006 02:55 AM
Forward declarations, templates, and typedefs Noah Roberts C++ 7 05-02-2006 11:02 PM
Templates templates templates JKop C++ 3 07-21-2004 11:44 AM



Advertisments