C++ newbie here.
I am a science guy writing a cfd (ish) code. I have created a class for all solving functions, and one that handles operations on a grid. The grid class wants to be able to see a few of the variables stored in the solving class, as passing them all to the grid class seems like a bit of effort.
So in my research I came across friend classes, but can't seem to get it to work. Please see the fully cut back example below. Class A is the solver, and it creates a grid class B. Even though I have written friend class B, I still get the following compile error (g++):
In member function 'void B::testB()':
error: 'a1' was not declared in this scope
Here is the code:
#include <iostream>
using namespace std;
class B {
private:
int b1;
public:
void testB(){
cout<<a1<<endl;
};
};
class A {
friend class B;
private:
int a1;
public:
void testA(){
a1=2;
B b;
b.testB();
};
};
int main(){
A a;
a.testA();
}
a1 only exists as a part of instances of class A. In other words, you need an A object in order to access a1.
EDIT: but it turns out that wasn't the only problem in the source you gave.
This works:
#include <iostream>
using namespace std;
class B;
class A {
friend class B;
private:
int a1;
public:
void testA();
};
class B {
private:
int b1;
public:
void testB(A *a){
cout << (a->a1) << endl;
}
};
void A::testA() {
this->a1 = 2;
B b;
b.testB(this);
}
int main(){
A a;
a.testA();
}
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