Question: I can't figure out what the actual problem is with this. 

```
typedef struct _actor
{
   ...
} _actor, Actor;

class Actor
{
   ...
};

```

I get this weird error message `actor.cpp:31: error: using typedef-name ‘Actor’ after ‘class’`. 

Any idea what I did wrong here? Thank you :)

Answer: 
To understand what going on, we need to break the first statement up into it's parts:

```
struct _actor 
{ 
   ... 
};

typedef struct _actor _actor;
typedef struct _actor Actor; 

```

First we create a structure called `_actor`. Next, we create a typedef for `struct _actor` called `_actor`. This is only useful in C. It allows us to say:

```
  _actor myActor;

```

instead of 

```
 struct _actor myActor;

```

But in C++, it's unnecessary, as C++ allows us to use the first form natively, without the typedef.

The third line creates a second typedef for `struct _actor` called `Actor`.
When you then try to create a class named `Actor` the compiler complains, as that name is already being used for the alias for the struct.

Now, it seems likely that in the original C code, the author had intended `struct _actor` to be merely an implementation detail, and that you would always use just `Actor` to refer to instances of this struct. Therefore, in your C++ code, you should probably eliminate the typedefs entirely, and just rename the struct. However, that will give you:

```
 struct Actor {.....}
 class  Actor {.....}

```

So, prehaps you should look into merging those two classes.
for arduino hectop 3d printer:

Rename `fpos_t` variables in `SdBaseFile.h` and `SdBaseFile.cpp` to another name like `fpos_t1` and recompile.