所以我std::reference_wrapper
在 C++11 中发现了这些奇特的东西,我发现它可能对未来的程序开发很有用。我玩了一会儿,我认为它可以在某些情况下替换旧的参考以获得更好的使用,直到我遇到以下错误:
#include <iostream>
#include <functional>
class testbench {
public:
int ownerid = 5;
bool camper = false;
};
class testing {
public:
testing(testbench &x);
int quack = 3;
std::reference_wrapper <testbench> camper;
};
testing::testing(testbench &x):camper(x) {
}
int main() {
testbench tempo;
testing test_a (tempo);
std::cout << test_a.camper.ownerid;
}
这会导致 gcc 出错(我使用 Code::Blocks 作为编辑器,使用 gcc 作为编译器)
'class std::reference_wrapper<testbench>' has no member named 'ownerid'
如果线
std::reference_wrapper <testbench> camper;
改为:
testbench &camper;
然后一切都按我的预期进行。
我该如何解决这个问题,或者这只是我 std::reference_wrapper
作为参考的一般改进的误解?