I found it will be convinient implement this feature in that way:
for example:
class IInterface1
{public:
virtual void Func1() = 0;
virtual void Func2() = 0;
protected:
virtual int Func3() = 0;
};
class IInterface2
{public:
virtual Func4() const = 0;
};
class Example : public IInterface1, public IInterface2
{
};
When select "Implement interface" from "Refactor context menu":
1) on "Example" symbol - then VA inserts in class scope all public and protected declarations of virtual and pure virtual function for all base classes.
In result class scope may look like this:
class Example : public IInterface1, public IInterface2
{public:
virtual void Func1();
virtual void Func2();
virtual void Func4() const;
protected:
virtual int Func3();
};
2)on "IInterface1" or "IInterface2" symbols separately - then VA inserts in class scope all public and protected declarations of virtual and pure virtual functions for selected base class.
In result class scope may look like this (with selection of IInterface2, for example):
class Example : public IInterface1, public IInterface2
{public:
virtual void Func4() const;
};
Insertion of functions declaration is enough. Programmer may select "Create Implementation" on used functions, and linker will swearing on not implemented functions.
It will be also convinient to have two possibilities in "Refactor context menu":
1)"Implement interface" - with full interface declaration insertion.
2)"Implement interface..." - with a dialog like in "Rename" feature,
tree of functions selection may look like this (with full selection by default):
+ IInterface1
+ public
- void Func1()
- void Func2()
+ protected
- int Func3()
+ IInterface2
+ public
- void Func4() const
Thanks. Best regards.