Files
clang-uml/docs/test_cases/t00002.md
2021-08-03 23:48:37 +02:00

91 lines
1.4 KiB
Markdown

# t00002 - Basic class inheritance
## Config
```yaml
compilation_database_dir: ..
output_directory: puml
diagrams:
t00002_class:
type: class
glob:
- ../../tests/t00002/t00002.cc
using_namespace:
- clanguml::t00002
include:
namespaces:
- clanguml::t00002
plantuml:
after:
- 'note left of @A(A) : Base abstract interface.'
```
## Source code
File t00002.cc
```cpp
#include <vector>
namespace clanguml {
namespace t00002 {
class A {
public:
virtual void foo_a() = 0;
virtual void foo_c() = 0;
};
class B : public A {
public:
virtual void foo_a() override { }
};
class C : public A {
public:
virtual void foo_c() override { }
};
class D : public B, public C {
public:
void foo_a() override
{
for (auto a : as)
a->foo_a();
}
void foo_c() override
{
for (auto a : as)
a->foo_c();
}
private:
std::vector<A *> as;
};
//
// NOTE: libclang fails on:
//
// class D : public virtual B, public virtual C {
//
class E : virtual public B, virtual public C {
public:
void foo_a() override
{
for (auto a : as)
a->foo_a();
}
void foo_c() override
{
for (auto a : as)
a->foo_c();
}
private:
std::vector<A *> as;
};
}
}
```
## Generated UML diagrams
![t00002_class](./t00002_class.png "Basic class inheritance")