if their is a possible way through which i can have an empty declaration in my base class's virtual function without returning NULL and still not having [error]
Certainly not. If you have a function that's declared to return a value, why would you expect to be able to define it not to? If the function's pure virtual, then you don't "clutter all derived classes with empty declarations of the virtual function", you leave it pure virtual until you have a meaningful value to return (or use NULL). It makes no sense to talk of having an non-abstract class where the function doesn't work as implied by the declaration: if that's the way your classes are shaping up, you should consider removing the function from the API, reconsidering why you're opposed to NULL, or throwing an exception instead.