On 11.03.2016 23:47, WhatMeWorry wrote:
--------------- main.d ------------------------

void main(string[] argv)
{
   ResourceManager.LoadShader("VertexShader.glsl",
                              "FragmentShader.glsl", "filler", "sprite");


--------------- File ResourceManager.d ------------------------
class ResourceManager
{
public:
     static void LoadShader(string vShaderFile, string ShaderFile,
                            string gShaderFile, string name)
     {
         vShaderFile = "Do something";
         // etc.
     }

Keeps returning

main.d(173): Error: undefined identifier 'LoadShader' in module
'ResourceManager'

This suggests that you simply `import ResourceManager;` in main.d.

Just `ResourceManager` is the module then.
`ResourceManager.ResourceManager` would be the class.
`ResourceManager.ResourceManager.LoadShader` would be the function.
And `ResourceManager.LoadShader` doesn't exist, as there is no symbol `LoadShader` at module scope.

Instead of using that long, repetitive name, you can use a selective import to have `ResourceManager` refer to the class instead of the module: `import ResourceManager: ResourceManager;`.

By the way, module names are all lower-case by convention, mainly to avoid problems with case-insensitive file systems. That means, the source file would usually be called resourcemanager.d or resource_manager.d. That would also avoid the name clash.

Also, a one-to-one relation between modules and classes is not usually followed in D. But if you want you can do that, of course.

Reply via email to