<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Template ableiten &amp;amp; erweitern &amp;amp; typedef]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich denke gerade darüber nach die Numerik-Vektor-Klasse von uBLAS ein<br />
wenig anzupassen. (z.B. anderen &lt;&lt; Operator). Teoretisch kann ich mir ja was eigenes ableiten und ein paar Sachen überladen:</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
class myvector : public boost::numeric::ublas::vector&lt;T&gt;
{};
</code></pre>
<p>Und da ich eh' stets double verwende kommt noch:</p>
<pre><code class="language-cpp">typedef myvector&lt;double&gt; Vector;
</code></pre>
<p>Leider bemeckert das der Compiler. Und selbst wenn er es nicht täte, ist mir nicht ganz wohl bei der Sache.</p>
<p>Was mache ich falsch? Oder ist das generell keine gute Idee?</p>
<p>Vielen Dank,<br />
Stimpy</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/154341/template-ableiten-amp-erweitern-amp-typedef</link><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 23:34:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/154341.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 26 Jul 2006 12:52:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Template ableiten &amp;amp; erweitern &amp;amp; typedef on Wed, 26 Jul 2006 12:52:57 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich denke gerade darüber nach die Numerik-Vektor-Klasse von uBLAS ein<br />
wenig anzupassen. (z.B. anderen &lt;&lt; Operator). Teoretisch kann ich mir ja was eigenes ableiten und ein paar Sachen überladen:</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
class myvector : public boost::numeric::ublas::vector&lt;T&gt;
{};
</code></pre>
<p>Und da ich eh' stets double verwende kommt noch:</p>
<pre><code class="language-cpp">typedef myvector&lt;double&gt; Vector;
</code></pre>
<p>Leider bemeckert das der Compiler. Und selbst wenn er es nicht täte, ist mir nicht ganz wohl bei der Sache.</p>
<p>Was mache ich falsch? Oder ist das generell keine gute Idee?</p>
<p>Vielen Dank,<br />
Stimpy</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1104581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1104581</guid><dc:creator><![CDATA[stimpleton]]></dc:creator><pubDate>Wed, 26 Jul 2006 12:52:57 GMT</pubDate></item><item><title><![CDATA[Reply to Template ableiten &amp;amp; erweitern &amp;amp; typedef on Wed, 26 Jul 2006 12:58:05 GMT]]></title><description><![CDATA[<p>Du machst nichts falsch und es ist imo keine schlechte Idee. Was sagt denn der Compiler? Meiner schluckt das ohne Fehler.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1104583</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1104583</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Wed, 26 Jul 2006 12:58:05 GMT</pubDate></item><item><title><![CDATA[Reply to Template ableiten &amp;amp; erweitern &amp;amp; typedef on Wed, 26 Jul 2006 13:09:31 GMT]]></title><description><![CDATA[<p>Er meckert, weil er den Konstruktor nicht mehr findet:</p>
<p>Vector x; // das ist OK<br />
Vector x(3); // das nicht</p>
<p>Fehlermeldung:</p>
<p>main.cpp:8: error: no matching function for call to `myvector&lt;double&gt;::myvector(int)'<br />
numeric.h:15: note: candidates are: myvector&lt;double&gt;::myvector()<br />
numeric.h:15: note: myvector&lt;double&gt;::myvector(const myvector&lt;double&gt;&amp;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1104602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1104602</guid><dc:creator><![CDATA[stimpleton]]></dc:creator><pubDate>Wed, 26 Jul 2006 13:09:31 GMT</pubDate></item><item><title><![CDATA[Reply to Template ableiten &amp;amp; erweitern &amp;amp; typedef on Wed, 26 Jul 2006 13:10:49 GMT]]></title><description><![CDATA[<p>du musst deinen ctor für einen int parameter überladen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1104604</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1104604</guid><dc:creator><![CDATA[miller_m]]></dc:creator><pubDate>Wed, 26 Jul 2006 13:10:49 GMT</pubDate></item><item><title><![CDATA[Reply to Template ableiten &amp;amp; erweitern &amp;amp; typedef on Wed, 26 Jul 2006 13:10:54 GMT]]></title><description><![CDATA[<p>Konstruktoren werden nicht vererbt. Die muss man also neuschreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1104605</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1104605</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Wed, 26 Jul 2006 13:10:54 GMT</pubDate></item><item><title><![CDATA[Reply to Template ableiten &amp;amp; erweitern &amp;amp; typedef on Wed, 26 Jul 2006 13:15:27 GMT]]></title><description><![CDATA[<p>Nichts leichter als das. Das wird ja nur durchgereicht an das Original.<br />
Habe ich schon öfter gesehen, war mir nur nie klar, daß die nicht<br />
einfach übernommen werden.</p>
<p>Wieder was Grundlegendes gelernt.<br />
Vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1104613</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1104613</guid><dc:creator><![CDATA[stimpleton]]></dc:creator><pubDate>Wed, 26 Jul 2006 13:15:27 GMT</pubDate></item><item><title><![CDATA[Reply to Template ableiten &amp;amp; erweitern &amp;amp; typedef on Wed, 26 Jul 2006 14:54:35 GMT]]></title><description><![CDATA[<p>So schluckt's der Compiler (auch ohne typedef):</p>
<pre><code class="language-cpp">class Vector : public boost::numeric::ublas::vector&lt;double&gt;
{
public:
	Vector(int size) : boost::numeric::ublas::vector&lt;double&gt;::vector(size) {}
};
</code></pre>
<p>Blöd ist nur, daß er jetzt gewisse Konvertierungen offenar nicht mehr hinbekommt.</p>
<pre><code class="language-cpp">Vector bb = prod(a,x);
</code></pre>
<p>main.cpp:39: error: conversion from `boost::numeric::ublas::matrix_vector_binary1&lt;boost::numeric::ublas::matrix&lt;double, boost::numeric::ublas::basic_row_major&lt;size_t, ptrdiff_t&gt;, boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt; &gt;, boost::numeric::ublas::vector&lt;double, boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt; &gt;, boost::numeric::ublas::matrix_vector_prod1&lt;double, double, double&gt; &gt;' to non-scalar type `Vector' requested</p>
<p>Schuld sind wohl die Expression-Templates. Da müßte ich wohl die Konvertierungen auch alle nochmal hinschreiben. Ich schätze mal das ist nicht so ganz trivial...<br />
Das wird mir langsam etwas heftig, oder hat jemand noch einen spontanen Einfall?<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1104688</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1104688</guid><dc:creator><![CDATA[stimpleton]]></dc:creator><pubDate>Wed, 26 Jul 2006 14:54:35 GMT</pubDate></item><item><title><![CDATA[Reply to Template ableiten &amp;amp; erweitern &amp;amp; typedef on Wed, 26 Jul 2006 15:03:19 GMT]]></title><description><![CDATA[<p>So schwer sind die Konvertierungen nicht, wenn die Ableitung keine eigenen Member hat kannst Du hier auch an die Basis durchreichen:</p>
<pre><code class="language-cpp">class Vector : public boost::numeric::ublas::vector&lt;double&gt;
{
public:
    Vector(int size) : boost::numeric::ublas::vector&lt;double&gt;::vector(size) {}
    Vector(const boost::numeric::ublas::vector&lt;double&gt;&amp; rhs) : boost::numeric::ublas::vector&lt;double&gt;::vector(rhs) {}
    Vector&amp; operator=(const boost::numeric::ublas::vector&lt;double&gt;&amp; rhs)
    { boost::numeric::ublas::vector&lt;double&gt;::operator=(rhs); return *this; }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1104697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1104697</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 26 Jul 2006 15:03:19 GMT</pubDate></item><item><title><![CDATA[Reply to Template ableiten &amp;amp; erweitern &amp;amp; typedef on Wed, 26 Jul 2006 15:12:39 GMT]]></title><description><![CDATA[<p>Im Prinzip ist es doch vielleicht nur eine Fleißarbeit.<br />
Durch die Template-Zaubereien entstehen noch mehr Klassen, die in Vector<br />
konvertiert werden müssen. (z.B. boost::numeric::ublas::matrix_vector_binary1)<br />
An sich sollte das aber immer nach dem gezeigten Schema laufen.</p>
<p>Da forsche ich morgen mal weiter.<br />
Danke erstmal!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1104704</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1104704</guid><dc:creator><![CDATA[stimpleton]]></dc:creator><pubDate>Wed, 26 Jul 2006 15:12:39 GMT</pubDate></item><item><title><![CDATA[Reply to Template ableiten &amp;amp; erweitern &amp;amp; typedef on Wed, 26 Jul 2006 15:24:58 GMT]]></title><description><![CDATA[<p>für den anfang reicht möglicherweise auch</p>
<pre><code class="language-cpp">class Vector : public boost::numeric::ublas::vector&lt;double&gt;
{
    typedef boost::numeric::ublas::vector&lt;double&gt; base;
public:
    template&lt;typename T&gt;
    Vector(const T&amp; arg) : base(arg) {}
    template&lt;typename T&gt;
    Vector&amp; operator=(const T&amp; rhs)
    {
        base::operator=(rhs);
        return *this;
    }
};
</code></pre>
<p>andere funktionen werden ja nicht verdeckt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1104712</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1104712</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 26 Jul 2006 15:24:58 GMT</pubDate></item><item><title><![CDATA[Reply to Template ableiten &amp;amp; erweitern &amp;amp; typedef on Fri, 28 Jul 2006 13:17:31 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>die uBLAS Templatezaubereien machen wohl folgendes:</p>
<p>- jede Binäre Operation wird zu einem Objekt erklärt<br />
- wenn jemand das Ergbnis als vector&lt;double&gt; sehen will,<br />
wird der Ausdruck ausgewertet (z.B. im Zuweisungsop.)<br />
- die Umwandlung Operation -&gt; vector&lt;double&gt; ist ein Schritt<br />
und wird daher implizit ausgeführt<br />
- die Umwandlung Operation -&gt; &quot;Mein Vector&quot; hingegen nicht mehr,<br />
da das zwei Schritte sind<br />
- daher glaube ich, daß ich sämtliche Umwandlungen, die uBLAS<br />
vorsieht selbst klöppeln muß (und das sind sicher einige)</p>
<p>Darauf deutet auch die obengenannte Fehlermeldung hin:</p>
<p>error: conversion from `boost::numeric::ublas::matrix_vector_binary1&lt; ...blabla ...&gt;' to non-scalar type `Vector' requested</p>
<p>Oder mir gelingt es, dem Compiler klar zu machen,<br />
daß die zusätzliche Wandlung vom uBLAS vector&lt;double&gt; in meinen 'Vector' kein Problem ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1106174</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1106174</guid><dc:creator><![CDATA[stimpleton]]></dc:creator><pubDate>Fri, 28 Jul 2006 13:17:31 GMT</pubDate></item></channel></rss>