Reputation: 2552
I am receiving the error: identifier "string" undefined.
However, I am including string.h and in my main file, everything is working fine.
CODE:
#pragma once
#include <iostream>
#include <time.h>
#include <string.h>
class difficulty
{
private:
int lives;
string level;
public:
difficulty(void);
~difficulty(void);
void setLives(int newLives);
int getLives();
void setLevel(string newLevel);
string getLevel();
};
Can someone please explain to me why this is occurring?
Upvotes: 83
Views: 229144
Reputation: 88751
You want to do #include <string>
instead of string.h
and then the type string
lives in the std
namespace, so you will need to use std::string
to refer to it.
Upvotes: 30
Reputation: 2690
#include <string>
would be the correct c++ include, also you need to specify the namespace with std::string
or more generally with using namespace std;
Upvotes: 7
Reputation: 97
You must use std namespace. If this code in main.cpp you should write
using namespace std;
If this declaration is in header, then you shouldn't include namespace and just write
std::string level;
Upvotes: 5
Reputation: 25874
You forgot the namespace you're referring to. Add
using namespace std;
to avoid std::string all the time.
Upvotes: 12
Reputation: 474236
Perhaps you wanted to #include<string>
, not <string.h>
. std::string
also needs a namespace qualification, or an explicit using
directive.
Upvotes: 5
Reputation: 146998
<string.h>
is the old C header. C++ provides <string>
, and then it should be referred to as std::string
.
Upvotes: 134
Reputation: 81724
Because string
is defined in the namespace std
. Replace string
with std::string
, or add
using std::string;
below your include
lines.
It probably works in main.cpp
because some other header has this using
line in it (or something similar).
Upvotes: 11