C++ Help

If you are a new Irrlicht Engine user, and have a newbie-question, this is the forum for you. You may also post general programming questions here.
Post Reply
axeves
Posts: 12
Joined: Tue Jun 21, 2011 5:13 pm
Location: Sweden

C++ Help

Post by axeves »

So, i tried to use the fbx loader in irrExt, and when i was using the normal solution it worked fine, but when i tried to use it in my project, it gives me 2 errors:

error C2668: 'isdigt' : ambiguous call to overloaded function
error C2668: 'isdigt' : ambiguous call to overloaded function
(The errors are the same)

i'm having these at the lines 340 and 366 in "my" CFBXMeshFileLoader.cpp:
Error 1 is in this:

Code: Select all

 
 
                                        bool ConsumeInt(int& val)
                                                {
                                                if (isBinary)
                                                        {
                                                        c8 type;
                                                        File->read(&type, 1);
                                                        if (type != 'I')
                                                                std::cout << "Expected 'I' qualifier" << std::endl;
                                                        File->read(&val, 4);
                                                        return true;
                                                        }
                                                core::stringc token;
                                                ConsumeNextToken(token);
                                                if (token[0]==',')
                                                        ConsumeNextToken(token);
                                                if ((token[0]!='-') && !isdigit(token[0])) //ERROR OCCURS HERE
                                                        {
                                                        File->seek(-1*token.size()-1, true);
                                                        return false;
                                                        }
                                                val = core::strtol10(token.c_str());
                                                return true;
                                                }
 
 
And error 2 is in this:

Code: Select all

 
                                        bool ConsumeFloat(float& val)
                                                {
                                                if (isBinary)
                                                        {
                                                        c8 type;
                                                        File->read(&type, 1);
                                                        if (type != 'D')
                                                                std::cout << "Expected 'D' qualifier" << std::endl;
                                                        double d;
                                                        File->read(&d, sizeof(d));
                                                        val=(float)d;
                                                        return true;
                                                        }
                                                core::stringc token;
                                                ConsumeNextToken(token);
                                                if (token[0]==',')
                                                        ConsumeNextToken(token);
                                                if ((token[0]!='.') && (token[0]!='-') && !isdigit(token[0])) //THE ERROR OCCURS HERE
                                                        {
                                                        File->seek(-1*token.size()-1, true);
                                                        return false;
                                                        }
                                                val = core::fast_atof(token.c_str());
                                                return true;
                                                }
 
The start of it is this:

Code: Select all

 
#include "stdafx.h"
 
#include "CFBXMeshFileLoader.h"
#include "ISkinnedMesh.h"
#include "ISceneManager.h"
#include "IReadFile.h"
#include "irrMap.h"
#include "irrArray.h"
#include "fast_atof.h"
#include <cctype>
#include <iostream>
 
namespace irr
        {
        namespace scene
                {
 
                //! Constructor
                CFBXMeshFileLoader::CFBXMeshFileLoader(scene::ISceneManager* smgr) : SceneManager(smgr)
                        {
#ifdef _DEBUG
                        setDebugName("CFBXMeshFileLoader");
#endif
                        }
 
 
                //! returns true if the file maybe is able to be loaded by this class
                //! based on the file extension (e.g. ".bsp")
                bool CFBXMeshFileLoader::isALoadableFileExtension(const io::path& filename) const
                        {
                        return (core::hasFileExtension( filename, "fbx"));
                        }
 
 
                namespace
                        {
 
 
If you need more code, just say the word and i'll provide, but the whole thing is 1514 lines, so i didn't paste everything.
Iyad
Posts: 140
Joined: Sat Mar 07, 2009 1:18 am
Location: Montreal, Canada

Re: C++ Help

Post by Iyad »

You defined isdigit() twice (as an overloaded function) and the compilers doesn't know which one to use.
#include <Iyad.h>
Post Reply