gpt4 book ai didi

c++ - '.expression'的左侧必须具有class/struct/union

转载 作者:行者123 更新时间:2023-12-02 11:08:54 25 4
gpt4 key购买 nike

在这段代码中,我有一个包含两个变量小时和分钟的对象。我试图将一个15分钟的值和一个20分钟的值连续添加到名为t1的对象中。但是我得到一个错误:'.plus'的左边必须有class/struct/union。

提前致谢。

#include <iostream>        
#include <iomanip>
using namespace std;

class Time {
public:
Time(int u, int m);
Time(int g);
void plus(Time t);
void plus(int x);
void print();

private:
int min;
int hour;
};

void Time::plus(Time t) {
min += t.min;
if (min > 59) {
hour++;
min = min - 60;
}
}

void Time::plus(int x) {
min += x;
if (min > 59) {
hour++;
min = min - 60;
}
}

void Time::print() {

cout << setw(2) << hour << " hour and " << min << " minutes";
}

Time::Time(int u, int m) : hour(u), min(m) {

}

Time::Time(int m) : hour(0), min(m) {
}


int main() {
Time t1(1, 10);
const Time kw(15);
t1.plus(kw).plus(20);
cout << "t1 = "; t1.print(); cout << endl;
cin.get();
return 0;
}

最佳答案

现在,您的plus返回void,或者什么都没有!所以你不能做t1.plus(kw).plus(20);。如果需要,您需要让自己的.plus()返回一个Time:

class Time {
public:
Time &plus(Time t);
Time &plus(int x);
...
};

我继续进行操作,并使其通过引用返回了 Time,以便在像您一样链接函数时,下一个 plus仍将修改调用第一个 plus的原始对象!如果您实现 plus函数,例如:
Time &Time::plus(Time t) {
min += t.min;
if (min > 59) {
hour++;
min = min - 60;
}
return *this; //return ourselves so that the next func will be called on us too!
}

Time &Time::plus(int x) {
min += x;
if (min > 59) {
hour++;
min = min - 60;
}
return *this; //return ourselves so that the next func will be called on us too!
}

关于c++ - '.expression'的左侧必须具有class/struct/union,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50125073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com