structs in header files

This worked for me:

// Sketch
#include "WS2801_M.h"
const unsigned PixelCount = 31;

WS2801Color buf[PixelCount];
WS2801_M strip;

void setup() {
  // put your setup code here, to run once:
  strip.Off(buf, PixelCount);
}

void loop() {
  // put your main code here, to run repeatedly:
}
// WS2801_M.h
#ifndef WS2801_M_H
#define WS2801_M_H
#include <Arduino.h>

typedef struct {
  uint8_t red;
  uint8_t green;
  uint8_t blue;
} WS2801Color;

class WS2801_M {
  public:
  bool Off(WS2801Color* buf, const unsigned count);
};
#endif
// WS2801_M.cpp
#include <Arduino.h>
#include "WS2801_M.h"

// +++++++++++++++++++++++++  clear all +++++++++++++++++++
bool WS2801_M::Off(WS2801Color* buf, const unsigned count) {
  for (int i = 0; i < count; i++) {
    buf[i].red = 0;
    buf[i].green = 0;
    buf[i].blue = 0;
  }
  return true;
}