我只是一個新的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.Error C3867'time :: sethour':非標準語法;使用'&'來創建一個指向成員Project33的指針D:\ headers \ Time.cpp
2.Error C2679二進制'>>':沒有找到操作符,它帶有'overloaded-function'類型的右手操作數沒有可接受的轉換)Project33 D:\ headers \ Time.cpp 任何人都可以幫我嗎?
如果按值傳遞的參數傳遞給函數,會發生什麼情況,以這樣的說法?當您嘗試修改參數時會發生什麼?該修改是否會反映在調用您的函數的代碼中? –