No, a struct can have anything a class can.
The one and only difference is that, if you have a member declared before you use public, private, or protected, it defaults to public in a struct and private in a class.
Otherwise, there's absolutely no functional difference between a struct and a class.
Typically, you use a struct when you have something that's intended to be POD (plain-old data) or to clearly indicate that all its members are public (or even that it has no members). You could just as easily use a class and just declare everything public, but using struct is often clearer and requires less typing.