help-octave
[Top][All Lists]
Advanced

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

liboctave questions


From: John W. Eaton
Subject: liboctave questions
Date: Thu, 18 Jan 1996 14:19:32 -0600

Andrew Smallbone <address@hidden> wrote:

: >>>>> "jwe" == "John W Eaton" <address@hidden> writes:
: 
: jwe> : 1.     Although the Array is a templated class arrays of floats don't
: jwe> : seem to work (the resize() method doesn't exist).  Should Arrays be
: jwe> : able to work with other types?
: jwe> Yes.
: 
: The following program:
: -------
: #include "Array.h"
: main(int argc, char *argv[])
: {
:   Array<float> a(10);
: }
: -------
: compiled with ``gcc -o test test.cc -loctave -lcruft -lf2c -lg++ -lm''
: produces:
: Undefined                       first referenced
:  symbol                             in file
: _._t5Array1Zf                       stats.o
: __t5Array1ZfiRCf                    stats.o

You need to tell the compiler to create an instance of the
Array<float> type.  Try adding

template class ArrayRep<float>;
template class Array<float>;

to your file.  With future versions of Octave, you will only need to
instantiate Array<TYPE>, and maybe someday, g++ will do this
automatically.

If you use Array<float> in more than one file, you can put the
instantiation in a separate file.

: The above works fine with ``Array<double>'' but fails for every other
: type.

It works for Array<double> because that instance of the Array class is
already in the library.  Octave doesn't need Array<float>, so it's not
in there.

jwe



reply via email to

[Prev in Thread] Current Thread [Next in Thread]