小编bal*_*bas的帖子

从基类指针访问派生的私有成员函数到派生对象

可能重复:
为什么我可以通过指向派生对象的基类指针访问派生的私有成员函数?

#include <iostream>
using namespace std;

class B {
public:
  virtual void fn1(void) {cout << "class B : fn  one \n"; }
  virtual void fn2(void) {cout << "class B : fn  two \n"; }
};

class D: public B {
    void fn1(void) {cout << "class D : fn one \n"; }
private:
    void fn2(void) {cout << "class D : fn two \n"; }
};

int main(void)
{
    B *p = new D;

    p->fn1();
    p->fn2();
}
Run Code Online (Sandbox Code Playgroud)

为什么p->fn2()调用派生类函数即使fn2 …

c++ polymorphism inheritance access-modifiers

8
推荐指数
1
解决办法
2834
查看次数

提升结构和类的融合序列类型和名称标识

我正在尝试将boost融合用于我的一个项目,并且我想知道如何获取结构和类的类型名称和变量名称.

#include <typeinfo>
#include <string>
#include <iostream>
#include <boost/fusion/include/sequence.hpp>
#include <boost/fusion/include/algorithm.hpp>
#include <boost/fusion/include/vector.hpp>
#include <boost/fusion/include/adapt_struct.hpp>
#include <boost/fusion/include/adapt_adt.hpp>

#include <boost/lexical_cast.hpp>

using namespace boost::fusion;

struct Foo
{
    int integer_value;
    bool boolean_value;
};


class Bar
{
    int integer_value;
    bool boolean_value;
public:
    Bar(int i_val, bool b_val):integer_value(i_val),boolean_value(b_val) {}
    int     get_integer_value() const       { return integer_value; }
    void    set_integer_value(int i_val)    { integer_value = i_val; }
    bool    get_boolean_value() const       { return boolean_value; }
    void    set_boolean_value(bool b_val)   { boolean_value = b_val; }
};

BOOST_FUSION_ADAPT_STRUCT(
    Foo,
    (int, integer_value)
    (bool, boolean_value) …
Run Code Online (Sandbox Code Playgroud)

c++ boost

4
推荐指数
2
解决办法
2460
查看次数

标签 统计

c++ ×2

access-modifiers ×1

boost ×1

inheritance ×1

polymorphism ×1