私は C++ でこのファクトリ パターンを初めて使用し、次のエラーが発生するメソッドの 1 つを実装しようとしているときに、まだヘッダーが与えられました。
静的メンバー関数でのメンバー 'creationFunctions' の使用が無効です
typedef Shape (*createShapeFunction)(void);
/* thrown when a shape cannot be read from a stream */
class WrongFormatException { };
class ShapeFactory {
public:
static void registerFunction(const std::string &string, const createShapeFunction *shapeFunction);
static Shape *createShape(const std::string &string);
static Shape *createShape(std::istream &ins);
private:
std::map<std::string, createShapeFunction *> creationFunctions;
ShapeFactory();
static ShapeFactory *getShapeFactory();
};
void ShapeFactory::registerFunction(const std::string &string, const createShapeFunction *shapeFunction)
{
creationFunctions.at(string) = shapeFunction;
}