Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 拥有一个类创建者和一个类子级,一个子级怎么能调用创建者函数,而没有对实际创建者的ptr?_C++_Oop_Boost - Fatal编程技术网

C++ 拥有一个类创建者和一个类子级,一个子级怎么能调用创建者函数,而没有对实际创建者的ptr?

C++ 拥有一个类创建者和一个类子级,一个子级怎么能调用创建者函数,而没有对实际创建者的ptr?,c++,oop,boost,C++,Oop,Boost,因此,我有一个class_实例化器,它在自身内部创建了my_class a的一个实例。a是否可以调用任何class_实例化器方法,而不具有指向class_实例化器的指针,或者只具有可用的接口,是否可以使用任何Boost库 伪代码示例: struct my_class { void call() { try{ call_parent_function(instansiator_function); }catch (exception &e) } }

因此,我有一个
class_实例化器
,它在自身内部创建了
my_class a
的一个实例。
a
是否可以调用任何class_实例化器方法,而不具有指向class_实例化器的指针,或者只具有可用的接口,是否可以使用任何Boost库

伪代码示例:

struct my_class 
{
  void call()
  {
    try{
    call_parent_function(instansiator_function);
    }catch (exception &e)
    }
};

struct class_instantiator
{
  void instansiator_function(){ cout << "Hello!";};
  void fun()
  {
   my_class a;
   a.call();
  }
};
struct my_类
{
无效调用()
{
试一试{
调用父函数(instansiator函数);
}捕获(例外和e)
}
};
结构类实例化器
{
void instansiator_function(){cout
[edan@edantmp]$g++parent.cpp
[edan@edantmp]$./a.out
家长方法!
[edan@edantmp]$cat parent.cpp
#包括
#包括
给我的父母上课{
受保护的:

void parent_method(){std::cout如果你想做循环引用(听起来像什么?),我会说你可能做错了什么。你能给我们一个具体的例子说明你想做什么吗


子类应该能够调用其父类的方法,只要它们不是私有的。

您所要求的不是100%清楚,但是要调用一个类的成员函数,您需要该类的实际实例(对象)。但是,如果您的函数(示例中的Me::pf())不需要访问类的非静态成员数据,那么您可以将函数声明为静态并直接调用它。我相应地修改了您的示例。另外,请注意,您有循环引用(Hello需要查看我的定义,反之亦然),所以我稍微重新组织了它

struct Hello 
{
    void call_static_member();
};


struct Me
{
    static void pf(){ std::cout << "Hello!";}
    void main()
    {
        Hello a;
    }
};

void Hello::call_static_member()
{
try{
    Me::pf();
}catch (exception &e){}
}  
struct你好
{
void call_static_member();
};
构造我
{

静态孔隙pf(){std::cout您从哪里派生任何东西?这看起来像两个独立的结构。这里没有父的概念。您只是从另一个结构/类中实例化另一个结构/类。如果您清楚地解释了您实际上要实现的目标,可能会有所帮助。也许我们可以提出一个解决方案。从现在开始(即使使用了伪代码)它也没有什么意义。但是那可能就是我。有<代码>空虚主()/<代码>类成员看起来像某个其他语言。你想用C++编写非C++代码吗?
struct Hello 
{
    void call_static_member();
};


struct Me
{
    static void pf(){ std::cout << "Hello!";}
    void main()
    {
        Hello a;
    }
};

void Hello::call_static_member()
{
try{
    Me::pf();
}catch (exception &e){}
}