c++ 클래스 템플릿 구현 후 main 함수에서 호출시 오류
글쓴이: cbh0819 / 작성시간: 수, 2022/11/09 - 5:58오후
Vector.h
#include <string>
#include <iostream>
#include <cmath>
using std::cout;
using std::endl;
template <typename T>
class Vector
{
private:
T *data; // 각 블록 당 담고 있는 데이터
int length; // 컨테이너가 갖고 있는 전체 데이터의 개수
int capacity; // 컨테이너가 가질 수 있는 전체 데이터 용량
public:
...
}
template <typename V>
Vector<V> inner_product(Vector<V> v1, Vector<V> v2)
{
Vector<V> temp(v1.size());
for (int i = 0; i < temp.size(); i++)
temp.push_back(0);
if (v1.size() != v2.size())
cout << "Incorrect Inner Product Try " << endl;
for (int i = 0; i < v1.size(); i++)
{
temp[i] = v1[i] * v2[i];
}
return temp;
}main.cpp
int main()
{
Vector<int> int_v1;
Vector<int> int_v2;
for (int i = 0; i < 5; i++)
{
int_v1.push_back(0);
int_v2.push_back(i + 4);
}
cout << "size of v1: " << int_v1.size() << endl;
cout << "Entry of v1: [ ";
for (int i = 0; i < int_v1.size(); ++i)
{
cout << int_v1[i] << " ";
}
cout << "] " << endl;
cout << "norm of v1: " << int_v1.norm() << endl;
cout << endl;
cout << "size of v2: " << int_v2.size() << endl;
cout << "Entry of v2: [ ";
for (int i = 0; i < int_v2.size(); ++i)
{
cout << int_v2[i] << " ";
}
cout << "] " << endl;
cout << "norm of v2: " << int_v2.norm() << endl;
cout << endl;
Vector<int> int_v3(int_v1.size());
for (int i = 0; i < 5; i++)
{
int_v3.push_back(0);
}
cout << "v3's length: " << int_v3.size() << endl;
cout << "inner product of vectors: [ ";
int_v3 = inner_product(int_v1, int_v2);
for (int i = 0; i < int_v1.size(); ++i)
{
cout << int_v3[i] << " ";
}
cout << "] " << endl;
cout << endl;
return 0;
}위와 같은 식으로 클래스에 대한 선언과 정의가 함께 포함된 Vector.h 파일과 이를 include 하여 main 함수 내에서 inner_product 함수를 실행하고자 합니다. 다만 실행시 다음과 같은 에러가 발생하는데, 이를 처리할 수 있는 방법이 있을까요?
error: lvalue required as left operand of assignment
temp[i] = v1[i] * v2[i];
추가로 inner_product 함수를 클래스 내 멤버함수로 넣어서 template 에 함께 걸리게(적절한 표현인지는 잘 모르겠습니다) 하여 사용할 수 있는 방법이 있다면 어떤 식으로 코드를 작성해야 할까요?
답변 미리 감사드립니다.
Forums:


댓글 달기