user1288167
user1288167

Reputation: 29

Compiling Helper file with functions

I'm at a loss - i'm just getting into C++ and for some reason this is not working out for me. So i'm using Netbeans, and i've got the following main file:

#include <cstdlib>

#include "functions.h"

using namespace std;

int main(int argc, char** argv) {

    f("help");

    return 0;
}

Functions.h file:

#include <string>

#ifndef FUNCTIONS_H
#define FUNCTIONS_H

void f( string a );

#endif

and Functions.cpp file:

#include "functions.h"

void f( string a ) {
    return;
}

So, long story short, it doesn't compile. It says it can't understand the string variable? I don't get it, i tried moving the include for string all over the place but nowhere seems to help. What do i do?

Upvotes: 0

Views: 311

Answers (3)

billz
billz

Reputation: 45410

You need to include string header file in Functions.h, also tell compiler that string is from std namespace.

#ifndef FUNCTIONS_H
#define FUNCTIONS_H

#include <string>
void f( std::string a );

#endif

Functions.cpp file:

#include "functions.h"

void f( std::string a ) {
    return;
}

Better practice is to pass string by const reference

void f(const std::string& a ) {
    return;
}

See Why is 'using namespace std;' considered a bad practice in C++?

Upvotes: 2

juanchopanza
juanchopanza

Reputation: 227420

If you are attempting to use std::string, you have to #include <string> in your functions header, and call it std::string,since it is in the std namespace.

#ifndef FUNCTIONS_H
#define FUNCTIONS_H

#include <string>

void f( std::string a );

#endif

See this related post and also why is 'using namespace std' considered bad practice in C++?

Upvotes: 2

Khaled Alshaya
Khaled Alshaya

Reputation: 96869

Include the standard header: <string>

#include <string>

Upvotes: 0

Related Questions