Re: void function returning value?
From: tom_usenet (tom_usenet_at_hotmail.com)
Date: 02/25/04
- Next message: Francis Glassborow: "Re: reinterpret_cast<>"
- Previous message: John Harrison: "Re: read problem"
- In reply to: Jochen Zeischka: "void function returning value?"
- Next in thread: Jochen Zeischka: "Re: void function returning value?"
- Reply: Jochen Zeischka: "Re: void function returning value?"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Wed, 25 Feb 2004 14:32:05 +0000
On Wed, 25 Feb 2004 12:11:17 +0100, "Jochen Zeischka"
<jochen.zeischka@rug.ac.be> wrote:
>I'm puzzled. When compiling this:
>
>template<class ValRes, class Val1, class Val2>
>Veld<ValRes>& mult(Veld<ValRes>& res, const Veld<Val1>& v1, const
>Veld<Val2>& v2) {
> // something
> return res;
>}
>
>the compiler says:
>
>error C2562: 'mult' : 'void' function returning a value
>c:\fe dev\lin lag 9\veld.h(64) : see declaration of 'mult'
>
>which is the following line within the 'Veld' class:
>
> template<class ValRes, class Val1, class Val2>
> friend Veld<ValRes>& mult(Veld<ValRes>& res, const Veld<Val1>& v1, const
>Veld<Val2>& v2);
>
>forward declaration of the friend function was done as follows:
>
>template<class Val> class Veld;
>
>template<class ValRes, class Val1, class Val2>
>Veld<ValRes>& mult(Veld<ValRes>& res, const Veld<Val1>& v1, const
>Veld<Val2>& v2);
>
>Why is the compiler talking about a 'void' function? To me it seems that a
>'Veld<ValRes>&' is returned...
To me too. This compiled fine for me on 3 compilers:
template<class Val>
class Veld;
template<class ValRes, class Val1, class Val2>
Veld<ValRes>& mult(Veld<ValRes>& res, const Veld<Val1>& v1, const
Veld<Val2>& v2);
template<class Val>
class Veld
{
template<class ValRes, class Val1, class Val2>
friend Veld<ValRes>& mult(Veld<ValRes>& res, const Veld<Val1>& v1,
const Veld<Val2>& v2);
//private var to test friendship
Val v;
};
template<class ValRes, class Val1, class Val2>
Veld<ValRes>& mult(Veld<ValRes>& res, const Veld<Val1>& v1, const
Veld<Val2>& v2)
{
res.v = v1.v + v2.v;
return res;
}
int main()
{
Veld<double> v1;
Veld<int> v2;
Veld<short> v3;
Veld<double> v = mult(v1, v2, v3);
}
What compiler are you using? Can you post a complete program
exhibiting the error?
Tom
-- C++ FAQ: http://www.parashift.com/c++-faq-lite/ C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
- Next message: Francis Glassborow: "Re: reinterpret_cast<>"
- Previous message: John Harrison: "Re: read problem"
- In reply to: Jochen Zeischka: "void function returning value?"
- Next in thread: Jochen Zeischka: "Re: void function returning value?"
- Reply: Jochen Zeischka: "Re: void function returning value?"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|