草庐IT

protected-mode

全部标签

c++ - 在 C++11 中, protected 意味着公共(public)?

继续在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++ - 在 C++11 中, protected 意味着公共(public)?

继续在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++ - 访问 protected 方法的方法指针?

这段代码: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但我正在寻找一个引用,以说明在规

c++ - 访问 protected 方法的方法指针?

这段代码: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但我正在寻找一个引用,以说明在规

c++ - 有没有我们*需要*在 C++ 中 protected 继承的例子?

虽然我见过需要private继承的罕见情况,但我从未遇到需要protected继承的情况。有人有例子吗? 最佳答案 这里的人似乎误认为protected类继承和protected方法。FWIW,我从未见过有人使用protected类继承,如果我没记错的话,我认为Stroustrup甚至认为“protected”级别是c++中的错误。如果您删除该保护级别并仅依赖公共(public)和私有(private),那么您将无能为力。 关于c++-有没有我们*需要*在C++中protected继承的

c++ - 有没有我们*需要*在 C++ 中 protected 继承的例子?

虽然我见过需要private继承的罕见情况,但我从未遇到需要protected继承的情况。有人有例子吗? 最佳答案 这里的人似乎误认为protected类继承和protected方法。FWIW,我从未见过有人使用protected类继承,如果我没记错的话,我认为Stroustrup甚至认为“protected”级别是c++中的错误。如果您删除该保护级别并仅依赖公共(public)和私有(private),那么您将无能为力。 关于c++-有没有我们*需要*在C++中protected继承的

c++ - 检测(可能是抽象的)基类的 protected 构造函数

我正在试验C++11的新特性。在我的设置中,我真的很想使用继承构造函数,但不幸的是还没有编译器实现这些。因此,我试图模拟相同的行为。我可以这样写:templateclassWrapper:publicT{public:templateWrapper(As&&...as):T{std::forward(as)...}{}//...niceadditionstoT...};这很有效……大多数时候。有时代码使用Wrapper类必须使用SFINAE来检测这样的Wrapper可以构建。但是存在以下问题:就重载决议而言,Wrapper的构造函数将接受任何参数-但如果类型为T,则编译失败(这不SFI

c++ - 检测(可能是抽象的)基类的 protected 构造函数

我正在试验C++11的新特性。在我的设置中,我真的很想使用继承构造函数,但不幸的是还没有编译器实现这些。因此,我试图模拟相同的行为。我可以这样写:templateclassWrapper:publicT{public:templateWrapper(As&&...as):T{std::forward(as)...}{}//...niceadditionstoT...};这很有效……大多数时候。有时代码使用Wrapper类必须使用SFINAE来检测这样的Wrapper可以构建。但是存在以下问题:就重载决议而言,Wrapper的构造函数将接受任何参数-但如果类型为T,则编译失败(这不SFI

c++ - 如何在 C++ 中对 protected 方法进行单元测试?

如何在C++中对protected方法进行单元测试?在Java中,我要么在与被测类相同的包中创建测试类,要么创建一个匿名子类,在我的测试类中公开我需要的方法,但这些方法在C++中都不可用.我正在使用NUnit测试一个非托管C++类。 最佳答案 假设您指的是可公开访问的类的protected方法:在测试代码中,定义被测类的派生类(直接或从其派生类之一)。为protected成员添加访问器,或在派生类中执行测试。“protected”访问控制在C++中确实不是很可怕:它不需要基类的合作来“破解”它。所以最好不要在基类中引入任何“测试代码

c++ - 如何在 C++ 中对 protected 方法进行单元测试?

如何在C++中对protected方法进行单元测试?在Java中,我要么在与被测类相同的包中创建测试类,要么创建一个匿名子类,在我的测试类中公开我需要的方法,但这些方法在C++中都不可用.我正在使用NUnit测试一个非托管C++类。 最佳答案 假设您指的是可公开访问的类的protected方法:在测试代码中,定义被测类的派生类(直接或从其派生类之一)。为protected成员添加访问器,或在派生类中执行测试。“protected”访问控制在C++中确实不是很可怕:它不需要基类的合作来“破解”它。所以最好不要在基类中引入任何“测试代码