簡體   English   中英

在構造函數錯誤中將類指針作為參數傳遞

[英]Passing class pointer as an argument in a constructor error

我的世界.hpp

Class my_world :: public I_my_world
{  
 public:    
   my_world(hello_world* dev);  
   virtual ~my_world() {};  
   virtual int trees();  
private:  
   hello_world* const p_dev;    
}

I_my_world.hpp

Class I_my_world  
{  
public:  
   virtual int trees() = 0;  
protected:  
   virtual ~I_my_world() {};  
}

I_hello_world.hpp

Class I_hello_world  
{  
public:  
   virtual void plant() = 0;  
protected:  
   virtual ~I_hello_world() {};  
}

hello_world.hpp

Class hello_world : public I_hello_world  
{ 
public:   
   hello_world() = default;  
   virtual ~hello_world() = default;  
   virtual void plant() {};  
}

my_world.cpp

int my_world::trees()  
{  
   p_dev->plant();  
   return 0;  
}

my_world::my_world(hello_world* dev)  
: p_dev(nullptr)  
{  
    
}  

new_world.cpp -> 在主里面

hello_world * alpha = new hello_world();
my_world * beta = new my_world(alpha);
int b = beta ->trees();

我在這里做錯了什么嗎? 我的處理器給出了 shell 線程錯誤。 我只有這么多代碼,所以它的錯誤不依賴於任何其他代碼。

我想知道我是否在代碼方面做錯了什么,如果它與處理器有關,我可以檢查其他事情。

這段代碼看起來很好奇

my_world::my_world(hello_world* dev) : p_dev(nullptr) 

那應該是

my_world::my_world(hello_world* dev) : p_dev(dev)

因為p_dev為空,你會在這里崩潰

int my_world::trees()
{
   p_dev->plant();
   return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM