Object-oriented languages and rule-based languages o er two distinct and useful programming abstractions. However, previous attempts to integrate data-driven rules into object-oriented languages have typically achieved an uneasy union at best. R++ is a new, closer integration of the rule-based and object-oriented paradigms that extends C++ with a single programming construct, the path-based rule, as a new kind of class member. Path-based rules|data-driven rules that are restricted to follow pointers between objects|are like \automatic methods" that are triggered by changes to the objects they monitor. Path-based rules provide a useful level of abstraction that encourage a more declarative style of programming, and are valuable in object-oriented designs as a means of modeling dynamic collections of interdependent objects. Unlike more traditional pattern-matching rules, path-based rules are not at odds with the object-oriented paradigm, and o er performance advantages for many natural applications.