Ich bin ein Blitz ++ Neuling. So weit, so gut, aber ich bin ein wenig verwirrt, warum der Kommentar gesetzt Zeile im Code unten mitWarum kompiliert dieser Blitz ++ Code nicht?
error: conversion from ‘blitz::_bz_tinyMatExpr<blitz::_bz_tinyMatrixMatrixProduct<double, double, 3, 3, 3, 3, 1, 3, 1> >’ to non-scalar type ‘const m33’ requested
ich auf Debian/Lenny bin kompilieren fehlschlägt (g ++ 4.3.2, Blitz 0,9). Hier ist der Code:
#include <blitz/blitz.h>
#include <blitz/array.h>
#include <blitz/matrix.h>
#include <blitz/matexpr.h>
#include <blitz/tinymat.h>
#include <blitz/tinymatexpr.h>
#include <blitz/tinyvec.h>
#include <blitz/tinyvec-et.h>
#include <blitz/vector.h>
#include <blitz/vector-et.h>
typedef blitz::TinyVector<double,3> v3;
typedef blitz::TinyMatrix<double,3,3> m33;
int main(int,char**)
{
const m33 a;
const m33 b;
m33 c;c=blitz::product(a,b); // Compiles OK
//const m33 d=blitz::product(a,b); // Fails to compile.
return 0;
}
Ich mag const-ed auf den Griff sein, also, es wäre schön zu wissen, ob es einen Weg gibt es immer so weit zu arbeiten (Erfahrung mit Blitz ++ schlägt vor, es könnte nur eine Frage der Auswahl der richtigen beinhaltet ...).
könnte es funktionieren, Const m33 d zu tun (Blitz :: Produkt (a, b)); (nur eine Vermutung, ich weiß nicht Blitz) –
Nicht gut ... Ich habe das versucht; gleicher Fehler – timday