Error when using `import`.

Liam McGillivray yoshi.pit.link.mario at gmail.com
Sat Feb 24 10:31:06 UTC 2024


I am trying to make a tactical role-playing game which I am 
likely to open-source. Right now the code is very simple, with 
only 3 files each containing a class with the same name.

The files are `Map.d`, `Tile.d`, and `Unit.d`. Each of these 
files contains an `import` line to access one of the others. I 
got the following errors when trying to compile all 3 files with 
DMD, and the same errors after switching to DUB.

```
source/Unit.d(6,17): Error: import `Unit.Map` is used as a type
source/Unit.d(16,5): Error: import `Unit.Map` is used as a type
source/Tile.d(9,15): Error: import `Tile.Unit` is used as a type
source/Map.d(6,22): Error: import `Map.Tile` is used as a type
source/Map.d(19,11): Error: import `Map.Tile` is used as a type
```

I thought that the circular chain of imports may be the problem, 
but removing all references to `Unit` in `Tile.d` did not fix the 
problem.

Here are the contents of Tile.d:
```
import Unit;

class Tile
{
	private bool allowStand = true;
	private bool allowFly = true;
	public int stickyness = 0;
	
	public Unit* occupant;
	
	bool allowUnit(bool isFlyer) {
		if (isFlyer) return this.allowFly;
		else return this.allowStand;
	}
}
```

`Unit.d` & `Map.d` are longer files. `Map.d` begins with `import 
Tile;`, and `Unit.d` begins with `import Map;`.

Why are the errors happening? What's the problem? Why is it 
`currentclass.importedclass` instead of simply the imported class?


More information about the Digitalmars-d-learn mailing list