#include <cstdlib>

template <class T>
class ClassA
{
public:
	ClassA() : _length(0) { };
	ClassA(size_t length) : _length(length) { };

	size_t Length() const { return _length; };
	void Length(size_t length) { _length = length; };

private:
	size_t _length;

};

template <class T>
class ClassB : public ClassA<T>
{
public:
	ClassB() { };

	template <size_t N>
	ClassB(const T (&value)[N]) :
		ClassA<T>(N)
	{
	}

	template <size_t N>
	ClassB<T>& operator=(const T (&value)[N])
	{
		ClassA<T>::Length(N);
		return *this;
	}

};

int main()
{
	ClassB<char> test = "Test";
    return 0;
}