diff options
Diffstat (limited to 'tests/libfoo')
-rw-r--r-- | tests/libfoo/Makefile | 15 | ||||
-rw-r--r-- | tests/libfoo/bar.cpp | 15 | ||||
-rw-r--r-- | tests/libfoo/bar.h | 15 | ||||
-rw-r--r-- | tests/libfoo/foo.cpp | 17 | ||||
-rw-r--r-- | tests/libfoo/foo.h | 14 | ||||
-rw-r--r-- | tests/libfoo/main.cpp | 15 |
6 files changed, 91 insertions, 0 deletions
diff --git a/tests/libfoo/Makefile b/tests/libfoo/Makefile new file mode 100644 index 000000000..eaf8f62f4 --- /dev/null +++ b/tests/libfoo/Makefile @@ -0,0 +1,15 @@ +all: foo.o bar.o + g++ -fPIC -shared foo.o bar.o -o libfoo.so + +foo.o: foo.h foo.cpp + g++ -fPIC foo.cpp -c + +bar.o: bar.h bar.cpp + g++ -fPIC bar.cpp -c + +test: main.cpp + g++ main.cpp -L. -lfoo -I. -o footest + +clean: + rm *.o *.so footest -rf + diff --git a/tests/libfoo/bar.cpp b/tests/libfoo/bar.cpp new file mode 100644 index 000000000..a8f9712a4 --- /dev/null +++ b/tests/libfoo/bar.cpp @@ -0,0 +1,15 @@ +#include <iostream> +#include "bar.h" + +using namespace std; + +void Bar::pureVirtual() +{ + cout << "Bar::pureVirtual()" << endl; +} + +void Bar::unpureVirtual() +{ + cout << "Bar::unpureVirtual()" << endl; +} + diff --git a/tests/libfoo/bar.h b/tests/libfoo/bar.h new file mode 100644 index 000000000..4a73c2deb --- /dev/null +++ b/tests/libfoo/bar.h @@ -0,0 +1,15 @@ +#ifndef BAR_H +#define BAR_H + +#include "foo.h" + +class Bar : public Foo +{ +public: + Bar() {} + virtual ~Bar() {} + virtual void pureVirtual(); + virtual void unpureVirtual(); +}; +#endif // BAR_H + diff --git a/tests/libfoo/foo.cpp b/tests/libfoo/foo.cpp new file mode 100644 index 000000000..22be35018 --- /dev/null +++ b/tests/libfoo/foo.cpp @@ -0,0 +1,17 @@ +#include <iostream> +#include "foo.h" + +using namespace std; + +void Foo::unpureVirtual() +{ + cout << "Foo::unpureVirtual()" << endl; +} + +void Foo::callPureVirtual() +{ + cout << "Foo::callPureVirtual() -- calling pureVirtual..." << endl; + this->pureVirtual(); + cout << " -- pureVirtual called." << endl; +} + diff --git a/tests/libfoo/foo.h b/tests/libfoo/foo.h new file mode 100644 index 000000000..585b844f7 --- /dev/null +++ b/tests/libfoo/foo.h @@ -0,0 +1,14 @@ +#ifndef FOO_H +#define FOO_H + +class Foo +{ +public: + Foo() {} + virtual ~Foo() {} + virtual void pureVirtual() = 0; + virtual void unpureVirtual(); + virtual void callPureVirtual(); +}; +#endif // FOO_H + diff --git a/tests/libfoo/main.cpp b/tests/libfoo/main.cpp new file mode 100644 index 000000000..6f410addb --- /dev/null +++ b/tests/libfoo/main.cpp @@ -0,0 +1,15 @@ +#include "foo.h" +#include "bar.h" + +int +main(int argv, char **argc) +{ + Bar bar; + + bar.unpureVirtual(); + bar.pureVirtual(); + bar.callPureVirtual(); + + return 0; +} + |