我收到一个编译错误,对此我有些困惑。这是在VS2003上。错误C2248:“A::y”:无法访问在“A”类中声明的protected成员classA{public:A():x(0),y(0){}protected:intx;inty;};classB:publicA{public:B():A(),z(0){}B(constA&item):A(),z(1){x=item.y;}private:intz;};问题在于x=item.y;访问被指定为protected。为什么B类的构造函数不能访问A::y? 最佳答案 因为这个:classb
我收到一个编译错误,对此我有些困惑。这是在VS2003上。错误C2248:“A::y”:无法访问在“A”类中声明的protected成员classA{public:A():x(0),y(0){}protected:intx;inty;};classB:publicA{public:B():A(),z(0){}B(constA&item):A(),z(1){x=item.y;}private:intz;};问题在于x=item.y;访问被指定为protected。为什么B类的构造函数不能访问A::y? 最佳答案 因为这个:classb
继续在C++error:basefunctionisprotected中学到的东西...C++11指向成员的指针规则有效地去除了任何值的protected关键字,因为可以在不相关的类中访问protected成员,而无需任何邪恶/不安全的强制转换。也就是说:classEncapsulator{protected:inti;public:Encapsulator(intv):i(v){}};Encapsulatorf(intx){returnx+2;}#includeintmain(void){Encapsulatore=f(7);//forbidden:std::couthttp://i
继续在C++error:basefunctionisprotected中学到的东西...C++11指向成员的指针规则有效地去除了任何值的protected关键字,因为可以在不相关的类中访问protected成员,而无需任何邪恶/不安全的强制转换。也就是说:classEncapsulator{protected:inti;public:Encapsulator(intv):i(v){}};Encapsulatorf(intx){returnx+2;}#includeintmain(void){Encapsulatore=f(7);//forbidden:std::couthttp://i
这段代码:classB{protected:voidFoo(){}}classD:publicB{public:voidBaz(){Foo();}voidBar(){printf("%x\n",&B::Foo);}}给出这个错误:t.cpp:Inmemberfunction'voidD::Bar()':Line3:error:'voidB::Foo()'isprotected为什么我可以调用protected方法,但不能获取其地址?有没有办法标记可以从派生类完全访问的东西,而不是只能从派生类和与所述派生类相关?顺便说一句:Thislooksrelated但我正在寻找一个引用,以说明在规
这段代码:classB{protected:voidFoo(){}}classD:publicB{public:voidBaz(){Foo();}voidBar(){printf("%x\n",&B::Foo);}}给出这个错误:t.cpp:Inmemberfunction'voidD::Bar()':Line3:error:'voidB::Foo()'isprotected为什么我可以调用protected方法,但不能获取其地址?有没有办法标记可以从派生类完全访问的东西,而不是只能从派生类和与所述派生类相关?顺便说一句:Thislooksrelated但我正在寻找一个引用,以说明在规
虽然我见过需要private继承的罕见情况,但我从未遇到需要protected继承的情况。有人有例子吗? 最佳答案 这里的人似乎误认为protected类继承和protected方法。FWIW,我从未见过有人使用protected类继承,如果我没记错的话,我认为Stroustrup甚至认为“protected”级别是c++中的错误。如果您删除该保护级别并仅依赖公共(public)和私有(private),那么您将无能为力。 关于c++-有没有我们*需要*在C++中protected继承的
虽然我见过需要private继承的罕见情况,但我从未遇到需要protected继承的情况。有人有例子吗? 最佳答案 这里的人似乎误认为protected类继承和protected方法。FWIW,我从未见过有人使用protected类继承,如果我没记错的话,我认为Stroustrup甚至认为“protected”级别是c++中的错误。如果您删除该保护级别并仅依赖公共(public)和私有(private),那么您将无能为力。 关于c++-有没有我们*需要*在C++中protected继承的
我正在试验C++11的新特性。在我的设置中,我真的很想使用继承构造函数,但不幸的是还没有编译器实现这些。因此,我试图模拟相同的行为。我可以这样写:templateclassWrapper:publicT{public:templateWrapper(As&&...as):T{std::forward(as)...}{}//...niceadditionstoT...};这很有效……大多数时候。有时代码使用Wrapper类必须使用SFINAE来检测这样的Wrapper可以构建。但是存在以下问题:就重载决议而言,Wrapper的构造函数将接受任何参数-但如果类型为T,则编译失败(这不SFI
我正在试验C++11的新特性。在我的设置中,我真的很想使用继承构造函数,但不幸的是还没有编译器实现这些。因此,我试图模拟相同的行为。我可以这样写:templateclassWrapper:publicT{public:templateWrapper(As&&...as):T{std::forward(as)...}{}//...niceadditionstoT...};这很有效……大多数时候。有时代码使用Wrapper类必须使用SFINAE来检测这样的Wrapper可以构建。但是存在以下问题:就重载决议而言,Wrapper的构造函数将接受任何参数-但如果类型为T,则编译失败(这不SFI