OONumerics User :

From: Mike Marchywka (mmarchywka_at_[hidden])
Date: 2006-03-27 17:06:38


I thought it may be complaining when it tried to use it,
but that worked too unless I made it confused- this works
when you remove the typo. If you post your complete code I can
try it.
$ gcc asdf.cpp
asdf.cpp: In member function `float C::SomeFunc(int, int, int)':
asdf.cpp:22: error: `y' undeclared (first use this function)
asdf.cpp:22: error: (Each undeclared identifier is reported only once for each
   function it appears in.)

class A {
protected:
  float * some_data;
  int x;
  int xy;
  int xz;
}
;
template <typename T>
class B : public A
{
public:
    T& asLeaf() { return static_cast<T&>(*this); }
    inline float SomeFunc(int i, int j, int k) {
        return asLeaf().SomeFunc(i,j,k);
    }
}
;
class C : public B<C>
{
   inline float SomeFunc(int i, int j, int k) {
        return some_data[k*x*y + j*x + i];
   }
}

;
C x;
main ()
{

};

-----Original Message-----
From: Hari Sundar [mailto:hsundar_at_[hidden]]
Sent: MondayMarch-27-2006 05:01 PM
To: Mike Marchywka
Cc: oon-list_at_[hidden]
Subject: Re: [oon-list] Static Polymorphism

I tried it with gcc 4 and 3.4 .. doesn't work with either ...

it does work if I use

this->some_data[k*x*y + j*x + i];

So is this a compiler issue ?

thanks,
~Hari

On 3/27/06, Mike Marchywka <mmarchywka_at_[hidden]> wrote:
>
>
> Worked from the cygwin version, at least it tried to link. I used to have so many problems
> with the MS compilers finding stuff I gave up on anything fancy.
> You can google the terms and find mail lists that discuss related issues- I think early
> on there were lots of problems like this.
>
> $ gcc asdf.cpp
> /usr/lib/gcc-lib/i686-pc-cygwin/3.3.3/../../../libcygwin.a(libcmain.o):: undefin
> ed reference to `_WinMain_at_16'
> collect2: ld returned 1 exit status
>
>
>
> class A {
> protected:
> float * some_data;
> int x;
> int y;
> int z;
> }
> ;
> template <typename T>
> class B : public A
> {
> public:
> T& asLeaf() { return static_cast<T&>(*this); }
> inline float SomeFunc(int i, int j, int k) {
> return asLeaf().SomeFunc(i,j,k);
> }
> }
> ;
> class C : public B<C>
> {
> inline float SomeFunc(int i, int j, int k) {
> return some_data[k*x*y + j*x + i];
> }
> }
>
>
> ;
>
>
>
> *************************************************************************
> Mike Marchywka
> EyeWonder
> Instant Streaming, Infinite Results
>
> 1447 Peachtree Street
> 9th Floor
> Atlanta, GA 30309
>
> w.678-891-2033
> c.
> h.770-565-8101
> mmarchywka_at_[hidden]
> alt: marchywka_at_[hidden]
> Instant Streaming, Intelligent results.
> *************************************************************************
>
>
>
>
>
> -----Original Message-----
> From: oon-list-bounces_at_[hidden] [mailto:oon-list-bounces_at_[hidden]]On Behalf Of Hari Sundar
>
> Sent: MondayMarch-27-2006 02:33 PM
> To: oon-list_at_[hidden]
> Subject: Re: [oon-list] Static Polymorphism
>
>
>
> Sorry to trouble you all again, but it seems that I can't get the Barton-Nackman trick to work. I had problems originally, so tried a simple test problem .. which worked, but my original problem is not working. My inheritance is like this,
>
> Class A {
> protected:
> float * some_data;
> int x;
> int y;
> int z;
> }
>
> template <typename T>
> Class B : public A
> {
> public:
> T& asLeaf() { return static_cast<T&>(*this); }
> inline float SomeFunc(int i, int j, int k) {
> return asLeaf().SomeFunc(i,j,k);
> }
> }
>
> class C : public B<C>
> {
> inline float SomeFunc(int i, int j, int k) {
> return some_data[k*x*y + j*x + i];
> }
> }
>
> When I use gcc to compile this .. I get errors of the sort ..
>
> error: 'some_data' was not declared in this scope
> error: 'x' was not declared in this scope
> error: 'y' was not declared in this scope
>
> Any ideas ?
>
> thanks,
> ~Hari
>
>
>

--
इयं विसृष्टिर्यतऽआबभूव यदि वा दधे यदि वा न ।
योऽअयस्याध्यक्षः परमे व्योमन्त्सोऽअङ्ग वेद यदि वा न वेद ।।
Whence all creation had its origin,
He, whether he fashioned it or whether He did not,
He, who surveys it all from the highest heaven,
He knows - or maybe even He does not know.
                               ~Rg veda