Я пытаюсь написать собственную «библиотеку» для векторов, где я могу определить операторов , таких как "*" для скалярного умножения и "+" для сложения векторов и т. д. c. Я думаю, что я понял большую часть этого правильно, но теперь я пытаюсь определить оператор для l2-нормы вектора, используя "| |" , что означает:
Vector v;
// let v be (3, 4)
double a = |v|;
// then a should be 5 (sqrt(16 + 9))
но затем я получаю эту ошибку:
main.cpp:11:17: error: no match for 'operator|' (operand types are 'Vector' and 'int')
double a = v|2|;
~^~
main.cpp:11:20: error: expected primary-expression before ';' token
double a = v|2|;
Теперь я пытаюсь определить оператор || ...
Я пытался сделать что-то вроде этого:
double Vector::operator||(int){
// here I used the scalar product to calculate the norm
double d = (*this) * (*this);
return sqrt(d);
}
или я попытался определить его как функцию друга с двумя параметрами. Я думаю, что основная проблема заключается в том, какие параметры я должен дать оператору, потому что он всегда требует два (или один, если это функция-член). Я просто не могу придумать, как это сделать ...
Кто-нибудь из вас знает, как решить эту проблему, или нет решения для этого, и я должен использовать обычную функцию?
Заранее спасибо:)