[英]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.