| // { dg-do run } |
| |
| extern "C" int printf(const char *, ...); |
| |
| class Environment { |
| public: |
| virtual ~Environment(); |
| |
| // Static factory method that returns the implementation that provide the |
| // appropriate platform-specific instance. |
| static Environment* Create(); |
| |
| // Gets an environment variable's value and stores it in |result|. |
| // Returns false if the key is unset. |
| virtual bool GetVar(const char* variable_name, char* result) = 0; |
| }; |
| |
| class EnvironmentImpl : public Environment { |
| public: |
| virtual bool GetVar(const char* variable_name, char* result) { |
| return true; |
| } |
| }; |
| |
| Environment::~Environment() {} |
| |
| // static |
| Environment* Environment::Create() { |
| return new EnvironmentImpl(); |
| } |
| |
| int main() |
| { |
| char * null = 0; |
| Environment * env = Environment::Create(); |
| env->GetVar(0, null); |
| printf("%p\n", env); |
| } |