c2064 problem-- namespace issue??

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Jon

    c2064 problem-- namespace issue??

    Hello all,

    Basic question. I have a vector/matrix class I'm building, and I seem
    to be getting errors such as this:

    ..\otherFileUsi ngVectorMatrixC lass.cpp(182) : error C2064: term does
    not evaluate to a function

    the specs are such:

    vec3f.h:
    Vec3f
    {
    ...
    public:
    ...

    // calculate dot product
    friend float dot( const Vec3f&, const Vec3f& );
    };
    -------------
    vec3f.cpp:
    float dot( const Vec3f &a, const Vec3f &b )
    { return a[0]*b[0] + ...; }
    -------------
    vecMatClass.h

    #include "vec2f.h"
    #include "vec3f.h"
    #include "vec4f.h"
    #include "mat3f.h"
    #include "mat4f.h"
    -------------
    someOtherFileUs ingVectorMatrix Class.cpp:

    #include "vecMatClas s.h"

    void Class::foo()
    {
    Vec3f a( 2,3,4 ), b( 5,3,2 );
    const float dotP = dot( a, b );
    }




    Am I missing something? I'm using MSVC++ 6 and its compiler. I tried
    to look up namespaces and such, and saw really old posts saying the
    compiler had trouble recognizing functions in namespaces, or something
    along those lines.

    For a large program, is it ok to "pollute" the global namespace with
    such functions as dot() (and there are 3 versions of it, for Vec2f,
    Vec3f, and Vec4f)?


    Thank you,
    Jon
  • Jonathan Mcdougall

    #2
    Re: c2064 problem-- namespace issue??

    > Hello all,[color=blue]
    >
    > Basic question. I have a vector/matrix class I'm building, and I seem
    > to be getting errors such as this:
    >
    > .\otherFileUsin gVectorMatrixCl ass.cpp(182) : error C2064: term does
    > not evaluate to a function[/color]

    What is this line?
    [color=blue]
    > the specs are such:
    >
    > vec3f.h:
    > Vec3f[/color]

    What is that?
    [color=blue]
    > {
    > ...
    > public:
    > ...
    >
    > // calculate dot product
    > friend float dot( const Vec3f&, const Vec3f& );
    > };[/color]
    [color=blue]
    > vec3f.cpp:
    > float dot( const Vec3f &a, const Vec3f &b )
    > { return a[0]*b[0] + ...; }
    >
    > vecMatClass.h
    >
    > #include "vec2f.h"
    > #include "vec3f.h"
    > #include "vec4f.h"
    > #include "mat3f.h"
    > #include "mat4f.h"[/color]

    What are these?
    [color=blue]
    > -------------
    > someOtherFileUs ingVectorMatrix Class.cpp:
    >
    > #include "vecMatClas s.h"
    >
    > void Class::foo()[/color]

    What is that ?
    [color=blue]
    > {
    > Vec3f a( 2,3,4 ), b( 5,3,2 );
    > const float dotP = dot( a, b );
    > }
    >
    >
    >
    >
    > Am I missing something?[/color]

    Yes, you should post compilable code, not just try to rewrite it.
    [color=blue]
    > For a large program, is it ok to "pollute" the global namespace with
    > such functions as dot() (and there are 3 versions of it, for Vec2f,
    > Vec3f, and Vec4f)?[/color]

    afaik, there was no namespaces in your program.


    Jonathan


    Comment

    Working...