Pointer vs Ref

confuzzled con at fuzzled.com
Mon Jun 9 07:24:41 UTC 2025


Hello community,

Is it possible to accomplish the following using ref instead of 
pointers? If so, please share an example.

import std.stdio;

// Represents our large, external data source (like TimeSeries)
struct DataSource
{
     int[3] data;
}

// Represents our Backtester engine
struct Engine
{
     // It STORES a pointer to its data source. This is its "memory".
     const(DataSource)* dataSource;

     // The run method USES the stored pointer.
     void run()
     {
         writeln("Engine running...");
         if (dataSource is null)
         {
             writeln("  Error: Data source not configured!");
             return;
         }

         // We access the data through the remembered pointer.
         foreach (i, val; dataSource.data)
         {
             writef("  Processing data point %d: %d\n", i, val);
         }
     }
}

void main()
{
     writeln("--- Running Pointer Member Example ---");

     // 1. Create our data. It lives here in main.
     auto myData = DataSource([10, 20, 30]);

     // 2. Create our engine. It starts empty.
     auto myEngine = Engine();
     writeln("Engine created. Has it been configured yet?");
     myEngine.run(); // Will fail because the pointer is null

     // 3. Configure the engine. We give it the ADDRESS of our data.
     //    The engine stores this address in its pointer member.
     writeln("\nConfiguring engine...");
     myEngine.dataSource = &myData;

     // 4. Later, we run the engine. It can now work because it
     //    remembered the address of myData.
     writeln("\nRunning configured engine...");
     myEngine.run();
}

Thanks,
-- confuzzled


More information about the Digitalmars-d-learn mailing list