DIGITAL
main.cpp
fehl. struct_a.h
#include <iostream>
#include "struct_b.h"
struct struct_a {
struct_b b;
struct_a(struct_b _b) : b(_b) {}
void print() {
std::cout << "B=";
b.print();
}
};
struct_b.h
#include <iostream>
struct struct_b {
int32_t val;
struct_b(int _val) : val(_val) {}
void print() {
std::cout << "{val = " << val << "}";
}
};
main.cpp
#include "struct_a.h"
#include "struct_b.h"
#include <iostream>
int main() {
struct_b b(42);
struct_a a(b);
b.print();
std::cout << "\n";
a.print();
return 0;
}
left.h
#include "right.h"
struct left {
right right;
left(right _right) : right(_right) {}
};
right.h
#include "left.h"
struct right {
left left;
right(left _left) : left(_left) {}
};
main.cpp
#include "left.h"
#include "right.h"
#include <iostream>
int main() {
}
car
benutzt. Ohne diese Deklaration wüsste der Compiler nicht, dass es sich bei car*
um einen gültigen (Pointer-)Datentypen handelt, und würde einen Typfehler melden. class car; // forward declaration
class wheel {
car* _car;
};
left.h
#include "right.h"
struct left {
right *right;
left(right *_right) : right(_right) {}
};
right.h
#include "left.h"
struct right {
left *left;
right(left *_left) : left(_left) {}
};
main.cpp
#include "left.h"
#include <iostream>
int main() {
}