我有一个 C++ 切片问题。我是 C++ 的新手,所以可能太笨了,无法意识到这无法完成....我尝试了各种解决方法,我目前的最佳方法如下所示。(我需要做这样的事情来避免在非常大的遗留代码库中更改大量接口。无论如何不要声称这是优雅的风格!!)
编译时遇到麻烦。这个想法合理吗?还是整个方法注定要失败?引用的构造函数似乎是问题所在。我已经阅读了 Stroustrup 的“C++ Programming Language”(或者至少我认为是相关部分),但它没有帮助。
class FOO {};
class FOOSUBCLASS : public FOO {
public:
FOOSUBCLASS(const int id = 0) : _id(id) {}
private:
int _id;
};
class BAR {
public:
BAR(const FOO foo) : _foo(foo), _realFoo(&_foo) { }
BAR(const FOOSUBCLASS foosc) : _foosc(foosc), _realFoo(&_foosc) {}
private:
FOO _foo;
FOOSUBCLASS _foosc;
FOO& _realFoo;
};
编译器不喜欢我的_realFoo(&_foo)
行。我希望对_foo
, 的引用只是类中成员变量的引用。这在 C++ 中是不可能的吗?
这是来自 VS2005 的具体错误:
'initializing' : cannot convert from 'FOO *' to 'FOO &'