Interfacing with basic C++ class
    Riccardo M 
    asd at asd.asd
       
    Wed Sep 28 19:57:10 UTC 2022
    
    
  
I think I am stuck in the easiest of the issues and yet it seems 
I cannot get around this.
I have a C++ file:
```
class MyClass {
public:
     int field;
     MyClass(int a) : field(a) {}
     int add(int asd) {
         return asd + 1;
     }
};
MyClass* instantiate(int asd) {
     return new MyClass(asd);
}
```
and a D file:
```
extern(C++) {
	class MyClass {
		public:	
			int field;
			@disable this();
			final int add(int asd);
		}
	MyClass instantiate(int asd);
}
void main()
{
	import std : writeln;
	auto myclass = instantiate(100);
	writeln(myclass.field);
}
```
This is a very simplified version of the dlang official example 
of interfacing with C++ classes.
When I compile, I can't correctly read 'field'. What I do:
```
g++ -c cpp.cpp
dmd app.d cpp.o -L-lstdc++
./app
```
What I get:
```
0
```
Instead of the expected 100.
Care to help me understand what am I doing wrong?
Side question: it seems that I need to declare every class method 
as "final" otherwise I get  undefined references during linking. 
Is this expected behaviour?
Thanks
    
    
More information about the Digitalmars-d-learn
mailing list