On Friday, 28 February 2014 at 23:53:48 UTC, Robin wrote:
I have made matrix a struct for a better performance and since
everybody here on the forums was complaining about that it
should be a struct type.
Making it a class is just a simple way to avoid the (explicit)
pointer. Weigh that against your other goals and decide. Also, a
pointer in itself isn't scarily unsafe.
When I uncomment the currently commented assertion I get
linking errors. (these strange and nearly unreadable error
messages.)
Here is a part of them:
[...]
undefined reference to
`_D6neoLab4core9Dimension9Dimension6__ctorMFNaNbNcxmxmZS6neoLab4core9Dimension9Dimension'
"undefined reference" means the linker can't find that symbol.
That means, you forgot to pass some file in. When compiling and
linking in one step, dmd needs all source files: something like
`dmd neoLab/core/ColumnVectorForwardRange.d neoLab/core/Matrix.d
neoLab/core/Dimension.d` (plus any other imported files outside
of phobos).
rdmd is a tool that reads the imports, calls dmd on all source
files, and then runs the executable. It's shipped with dmd. With
rdmd it would be just `rdmd
neoLab/core/ColumnVectorForwardRange.d`.