I am trying to create a class in seperate files with private variables. So far my classes code is:
In TestClass.h
#ifndef TESTCLASS_H
#define TESTCLASS_H
#include <string>
using namespace std;
class TestClass
{
private:
string hi;
public:
TestClass(string x);
void set(string x);
void print(int x);
};
#endif
In TestClass.cpp
#include "TestClass.h"
#include <iostream>
#include <string>
using namespace std;
TestClass::TestClass(string x)
{
cout << "constuct " << x << endl;
}
void set(string x){
hi = x;
}
void print(int x){
if(x == 2)
cout << hi << " x = two\n";
else if(x < -10)
cout << hi << " x < -10\n";
else if(x >= 10)
cout << hi << " x >= 10\n";
else
cout << hi << " x = " << x << endl;
}
When I try to build in Code::Blocks it says:
But when I run it (and don't build it) everything is working.
You forgot to write TestClass:: as shown below:
void TestClass::set(string x)
//^^^^^^^^^^^this
void TestClass::print(int x)
//^^^^^^^^^^^this
That is necessary so that compiler can know that set and print are member functions of class TestClass. And once you write it, making them member functions, they can acess the private members of the class.
Also, without TestClass::, set and print function would become free functions.
Use
void TestClass::set(string x){
and
void TestClass::print(int x){
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With