我有以下代码,其中我期望字符串表示将被返回。但是看起来我可能犯了一些错误,因为这段代码没有返回字符串表示。
/* Section 16.2.9.2 The C++ Programing Language
Bjarne Stroustrup 4th Edition Book, pages 462-463 */
#include <iostream>
#include <string>
using std::cout;
using std::endl;
using std::string;
using std::to_string;
class Date {
private:
int d, m,y;
mutable bool cache_valid;
mutable string cache;
void compute_cache_value() const {
string dd = to_string(d);
string mm = to_string(m);
string yy = to_string(y);
cache = dd + "," + mm + "," + yy;
}
public:
explicit Date(int dd, int mm, int yy):d{dd}, m{mm}, y{yy} {};
string string_rep() const;
};
string Date::string_rep() const {
if (!cache_valid) {
compute_cache_value();
cache_valid = true;
}
return cache;
}
int main() {
Date dx(25,3,2011);
string s1 = dx.string_rep();
cout << s1 << endl;
return 0;
}
将cache_valid
初始化为false
使代码正常工作。谢谢大家。