#include <iostream>
#include <string>
#include <memory>
class Animal { // Capital letter class name
public:
virtual std::string speak() const = 0; // Pure virtual function
virtual ~Animal() = default; // Virtual destructor
};
class Dog : public Animal {
public:
std::string speak() const override { // Added `const` to match base class
return "bow bow";
}
};
class Cat : public Animal {
public:
std::string speak() const override { // Added `const` to match base class
return "meuw";
}
};
class AnimalFactory {
public:
static std::unique_ptr<Animal> getAnimal(const std::string& animalType) {
if (animalType == "Dog") {
return std::make_unique<Dog>();
} else if (animalType == "Cat") {
return std::make_unique<Cat>();
} else {
return nullptr; // Return nullptr for invalid animal type
}
}
};
int main() {
auto out = AnimalFactory::getAnimal("Dog");
if (out) { // Check if `getAnimal` returned a valid object
std::cout << out->speak() << std::endl; // Output: bow bow
} else {
std::cout << "Failed to create animal." << std::endl;
}
return 0;
}
To embed this project on your website, copy the following code and paste it into your website's HTML: