0
숙제 프로그램의 구문에 문제가 있습니다. 프롬프트가 제대로 프로그램 조각 실행할 수있는 방법에 삽입 과부하하는 것입니다 그래서구조체 벡터에 <<을 오버로드하는 방법
for (int i = 0; i < v.size(); ++i) cout << v[i] << endl; cout << endl;
을, 이것은 내가 지금까지 가지고있는,하지만 난 여전히 COUT에 오류가 < < V [I] 문 (바이너리 표현에 잘못된 피연산자) :
unsigned int seed;
struct node
{
int integer;
double value;
};
double random(unsigned int &seed);
void initialize_vector(vector<node> &v);
template<typename T>
void print_vector(const vector<T> &v);
template<typename T>
ostream &operator <<(ostream &out, const vector<T> &v);
template<typename T>
void output(ostream &out, const vector<T> &v);
int main()
{
vector<node> v(10);
initialize_vector(v);
print_vector(v);
return 0;
}
double random(unsigned int &seed)
{
const int MODULUS = 15749;
const int MULTIPLIER = 69069;
const int INCREMENT = 1;
seed = ((MULTIPLIER * seed) + INCREMENT) % MODULUS;
return double(seed)/double(MODULUS);
}
void initialize_vector(vector<node> &v)
{
for (int i = 0; i < v.size(); ++i)
{
v[i].integer = int (11 * random(seed));
v[i].value = double (11 * random(seed));
}
}
template<typename T>
void print_vector(const vector<T> &v)
{
for (int i = 0; i < v.size(); ++i)
cout << v[i] << endl;
cout << endl;
}
template<typename T>
ostream &operator <<(ostream &out, const vector<T> &v)
{
output(out, v);
return (out);
}
template<typename T>
void output(ostream &out, const vector<T> &v)
{
cout << v.integer;
cout << setprecision(2) << fixed << setw(6) << v.value;
}
내가 지금 다시와 마지막 3 개 기능에 대한 const를 참조하지 않고 통과와 함께 대신 T의 노드를 통과 해봤 내 구문을 가정 void 출력 함수에서 어떻게 든 잘못된 것입니다. 올바른 방향으로 도움이나 의견을 주시면 감사하겠습니다.
* 참고 : ostream & 운영자 기능을 변경할 수 없습니다. V 노드의 벡터 인 경우
에 대한 운영자 < < 과부하 하나 더 기능이 필요합니다. "ostream 및 연산자 기능을 변경할 수 없습니까?"라는 의미는 무엇입니까? 나는 당신이'operator << (ostream &, foo)'함수를 의미한다고 가정하니? _all_ 벡터에 대해 이미 변경/추가했습니다. 왜 당신은'const 노드 '를 전문으로 할 수 없습니까? –
노드는'ostream & operator << (ostream & out, const node & n);' –
@ Dúthomhas를 필요로합니다. 교수님이 저에게 제공 한 것이기 때문에 함수 안에있는 것을 바꿀 수 없습니다 .' const 노드 '를 전문으로 할 때, 'template'을 사용할 필요가 없을까요? 그리고 @Aluan은 다른 함수가 될까요, 아니면 원래의'operator <<'함수를 수정하겠습니까? –
minty59