私はちょうどC++を初めて使っています。そして私は初めです...ちょっと助けてください...誰かが私がどこでこれについて間違っているのか説明できるなら、 :
すべての私TIME.Hコードの最初の:>>演算子のオーバーロード... C++
#ifndef TIME_H
#define TIME_H
#include<iostream>
using namespace std;
class time {
friend istream &operator>> (istream &, time);
private:
int hour;
int minute;
int second;
public:
time(int = 0, int = 0, int = 0);
void settime(int, int, int);
void sethour(int);
void setminute(int);
void setsecond(int);
};
#endif
そして今、Time.cpp:
#include<iostream>
#include"Time.h"
using namespace std;
using std::cout;
using std::cin;
time::time(int h, int m, int s)
{
settime(h, m, s);
}
void time::settime(int hr, int min, int sec)
{
sethour(hr);
setminute(min);
setsecond(sec);
}
void time::sethour(int h)
{
hour = (h >= 0 && h < 24) ? h : 0;
}
void time::setminute(int m)
{
minute = (m >= 0 && m < 60) ? m : 0;
}
void time::setsecond(int s)
{
second = (s >= 0 && s < 60) ? s : 0;
}
istream &operator>> (istream &in, time m)
{
in >> m.sethour >> m.setminute >> m.setsecond;
}
そして最後にsource.cpp:
#include<iostream>
#include"D:\headers\Time.h"
using namespace std;
void main()
{
time t;
cin >> t;
system("pause");
}
コンパイルするとエラーになります。
1.エラーC3867 'time :: sethour':非標準構文。 '&'を使用して、メンバへのポインタを作成します。Project33 D:\ headers \ Time.cpp
2.Error C2679バイナリ '>>': 'overloaded-function'タイプの右オペランドを取る演算子が見つかりませんでした。許容される変換はありません)Project33 D:\ headers \ Time.cpp 誰かが私を助けることができますか?
、何がその引数になりますか?引数を変更しようとするとどうなりますか?その変更はあなたの関数を呼び出すコードに反映されますか? –