// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef VIRTUAL_METHODS_H_ #define VIRTUAL_METHODS_H_ // Should warn about virtual method usage. class VirtualMethodsInHeaders { public: // Don't complain about these. virtual void MethodIsAbstract() = 0; virtual void MethodHasNoArguments(); virtual void MethodHasEmptyDefaultImpl() {} // But complain about this: virtual bool ComplainAboutThis() { return true; } }; // Complain on missing 'virtual' keyword in overrides. class WarnOnMissingVirtual : public VirtualMethodsInHeaders { public: void MethodHasNoArguments() override; }; // Don't complain about things in a 'testing' namespace. namespace testing { struct TestStruct {}; } // namespace testing class VirtualMethodsInHeadersTesting : public VirtualMethodsInHeaders { public: // Don't complain about no virtual testing methods. void MethodHasNoArguments(); private: testing::TestStruct tester_; }; #endif // VIRTUAL_METHODS_H_