Odd intellisense behaviour in VS2012 using C++. Ignores #include?

I have a header defined as follows

#pragma once

#include <map>      
#include <string>
#include "gl\glew.h"
#include "glm\glm\glm.hpp"

class TextureAtlas
    TextureAtlas(std::string fileName);

    // Returns the index of a sprite from its name
    //int getIndex(std::string name);

    // Returns the source rectangle for a sprite
    glm::vec4 getSourceRectangle(std::string name);

    // Returns the OpenGL texture reference
    GLuint getTexture();

    float getTextureHeight();
    float getTextureWidth();

    float m_height;

    // Holds the sprite name and its index in the texture atlas
    //std::map<std::string, int> m_indices;

    // Holds the source rectangle for each sprite in the texture atlas
    std::map<std::string, glm::vec4> m_sourceRectangles;

    // The texture containing all of the sprite images
    GLuint m_texture;

    float m_width;

I'm getting errors with the following constructor for the associated source

#include "TextureAtlas.h"
#include "Content\Protobuf\TextureAtlasSettings.pb.h"
#include <iostream> 
#include <fstream>                                      // ifstream

#define LOCAL_FILE_DIR "Content\\"

TextureAtlas::TextureAtlas(std::string fileName)
    TextureAtlasSettings::TextureAtlasEntries settings;

    std::string filePath(LOCAL_FILE_DIR);

    ifstream file(filePath, ios::in | ios::binary);     // ERROR!

    if (file.is_open())
        if (!settings.ParseFromIstream(&file)) 
            printf("Failed to parse TextureAtlasEntry");

    int numEntries = settings.entries().size();

    for (int i = 0; i < numEntries; i++)
        m_sourceRectangles[settings.entries(i).name()] = glm::vec4(


The problem is

IntelliSense: identifier "ifstream" is undefined

If I put std:: infront of it (std::ifstream) then that removes the error above but causes the following error

error C2653: 'ios' : is not a class or namespace name

What is going on? It doesn't make any sense as I think I have included everything I need?!


In the code as you posted it you have to prefix the types with the namespace name, i.e. std::ifstream and std::ios.

Need Your Help

Collecting emails on a static page in rails

ruby-on-rails ruby ruby-on-rails-3 forms routing

I have a static page on my Rails 3.1 site. I have a Visitor model that has only an email attribute (email:string). I would like to collect emails from visitors to my site. They will type their emai...

Call TObject.GetInterface free object


I'm trying of execute a code like this: