In the past I've been able to forward declare a class as a struct and vice-versa, or to declare the type like in C, like:
void function(struct Foo* arg);
void function(class Foo* arg);
I thought they were the same thing for the purposes of this or forward declaring because I've heard many times that the only difference between a struct and class is the default access specifiers (struct being public default while class is private).
I've changed one word in a class of mine from "struct" to "class" and for the first time I've seen that it breaks my code, the linker says that it can't find a variable of that type that's defined somewhere. Is this not allowed to mix "struct" and "class" in this way?