template<typename T, int n>
class Vector {
public:
T GetComp(int i) {
return comp[i];
}
void SetComp(int i, T val) {
comp[i] = val;
}
Vector operator+(const Vector& rhs) const {
Vector res;
for (int i = 0; i < n; i++) {
res.comp[i] = this->comp[i] + rhs.comp[i];
}
return res;
}
private:
T comp[n];
};
int main() {
Vector<float, 3> v1, v2;
Vector<float, 2> v4;
v1.SetComp(0, 2);
v1.SetComp(1, 3);
v1.SetComp(2, 4);
v2.SetComp(0, 5);
v2.SetComp(1, 6);
v2.SetComp(2, 7);
Vector<float, 3> v3 = v1 + v4; // <= 에러가 발생하는 코드입니다
cout << v3.GetComp(0) << ", " << v3.GetComp(1) << ", " << v3.GetComp(2) << endl;
}
대략적인 코드를 위와 같이 구성해보았는데, 파라미터값이 서로 다른 상황에서 +연산이 가능하게끔 설계해보고 싶습니다
파라미터 값이 같은 v1과 v2끼리는 연산이 잘 되어서 괜찮지만, 파라미터 값이 다를 땐 어떻게 설계해야 연산이 가능할까요?
조언을 구하고 싶습니다