для того, что вы хотите сделать, вы должны взглянуть на код Boost.ublas , поскольку он делает именно это.
Начните с файла vector.hpp
, а затем вернитесь в иерархию (родители vector<>
). Матрицы немного сложнее, но механизм тот же.
Теперь я могу посоветовать не пытаться воспроизвести сложность библиотеки в качестве первой попытки, например ublas_expression
и тому подобное. Вы можете сделать это проще, сделав тип базовым объектом, а затем реализуйте бинарный оператор.
Смотри и здесь: http://www.bnikolic.co.uk/blog/cpp-expression-minimal.html