• Advertisement

• ### Popular Now

• 13
• 27
• 9
• 9
• 20
• Advertisement
• Advertisement
• Advertisement

# having trouble passing strings in c++

This topic is 4579 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

## Recommended Posts

I've decided to try to get into C++ programming. I messed around with it a little in the past but never as a OOP language. Now that I have experience with OOP in Java I decided to try my hand at C++ again. This is just a little test program I made to see if everything works, but so far it isn't. My problem starts when I start trying to pass a string as an argument.
//test.h
#ifndef TEST_H
#define TEST_H

//a very basic class definition
class Test
{
public:
Test();
void hello();
void integer(int number);
void greet(string greeting);
};

#endif


//test.cpp
#include <iostream>
#include "test.h"

using namespace std;

//constructor
Test::Test()
{
cout << "Hello ";
}

//test function 1, it works
void Test::hello()
{
cout << "World\n";
}

//the next 2 functions look exactly the same
// except one uses int and one uses string
//yet the int one works and the string one does not. WHY?!
void Test::integer(int number)
{
cout << number;
}

void Test::greet(string greeting)
{
cout << greeting;
}


//test_app.cpp
#include &lt;iostream&gt;
#include "test.h"

using namespace std;

int main()
{
cout &lt;&lt; "Testing!\n";
Test bleh;                               //should output "Hello"
bleh.hello();                            //should output "World"
bleh.integer(123);                   //should output "123"
string myGreeting = "GREET!";
bleh.greet(myGreeting);           //should output "GREET!"

//just adding this part so the window doesn't close
//right away when I run the program
char asdf;
cin &gt;&gt; asdf;

return 0;
}


If I comment out all the parts about the greet function, I get no errors. The program outputs "Hello World" on one line and "123" on the next just like I expected. But if I leave the greet function in, I get this weird error from test.h that says "variable or field 'greet' declared void" and "expected ; before ( token."

#### Share this post

##### Share on other sites
Advertisement
std::string isn't a built-in type. You need to #include <string>.

#### Share this post

##### Share on other sites
#include <string> and use the datatype ::std::string instead of just "string." There is no built-in string type in C++, it is a type defined in the C++ standard libraries. Edit: Haha I like how we both editted to say the same thing.

#### Share this post

##### Share on other sites
hrm ok I'll try that. I thought strings would be included when using the std namespace

#### Share this post

##### Share on other sites
Quote:
 Original post by Toridashrm ok I'll try that. I thought strings would be included when using the std namespace

The std namespace just makes it so you would not need to type std::XXX. You are still responsible for including the proper header files. Like if you tried to use a vector now, you would get errors because <vector> is not included.

#### Share this post

##### Share on other sites
D'oh. All I really needed was a using namespace std in test.h, or to do std::string isntead. No need to include <string>.

Thanks for the help

#### Share this post

##### Share on other sites
That's because you had
#include <iostream>
#include "test.h"

if you had

#include "test.h"
#include <iostream>
you would need it to #include <iostream> in test.h. You want #include <iostream> in test.h because now it wont work if you use it in another file that doesn't include <iostream> or includes it in a different order. Remember that #include just copy and pastes the file where you put the include.

#### Share this post

##### Share on other sites

• Advertisement