fork download
  1. #include <vector>
  2. #include <iostream>
  3. #include <memory>
  4.  
  5. class Renderer {};
  6. class AudioPlayer {};
  7.  
  8. namespace Asset {
  9. class Asset {};
  10. class Sprite: public Asset {};
  11. class Font: public Asset {};
  12. class SoundEffect: public Asset {};
  13. class SoundTrack: public Asset {};
  14. //Asset (Un)loading
  15. class Loader {};
  16. }
  17.  
  18. std::vector<std::shared_ptr<A>> items;
  19.  
  20. void test(A& a) {
  21. printf("A\n");
  22. }
  23.  
  24. void test(std::shared_ptr<B> b) {
  25. printf("B\n");
  26. }
  27.  
  28. void test(C& c) {
  29. printf("C\n");
  30. }
  31.  
  32. int main() {
  33. items.push_back(std::make_shared<B>());
  34. for(auto i: items) {
  35. test(i);
  36. }
  37. }
Compilation error #stdin compilation error #stdout 0s 4544KB
stdin
Standard input is empty
compilation info
prog.cpp:18:29: error: use of undeclared identifier 'A'
std::vector<std::shared_ptr<A>> items;
                            ^
prog.cpp:18:38: error: expected a type
std::vector<std::shared_ptr<A>> items;
                                     ^
prog.cpp:20:11: error: unknown type name 'A'
void test(A& a) {
          ^
prog.cpp:24:27: error: use of undeclared identifier 'B'
void test(std::shared_ptr<B> b) {
                          ^
prog.cpp:24:27: error: use of undeclared identifier 'B'
prog.cpp:28:11: error: unknown type name 'C'
void test(C& c) {
          ^
prog.cpp:33:2: error: use of undeclared identifier 'items'
        items.push_back(std::make_shared<B>());
        ^
prog.cpp:33:35: error: use of undeclared identifier 'B'
        items.push_back(std::make_shared<B>());
                                         ^
prog.cpp:34:14: error: use of undeclared identifier 'items'
        for(auto i: items) {
                    ^
9 errors generated.
stdout
Standard output is empty