我有一個C++程序:C++。錯誤:無效不是一個指針到對象類型
struct arguments
{
int a, b, c;
arguments(): a(3), b(6), c(9) {}
};
class test_class{
public:
void *member_func(void *args){
arguments vars = (arguments *) (*args); //error: void is not a
//pointer-to-object type
std::cout << "\n" << vars.a << "\t" << vars.b << "\t" << vars.c << "\n";
}
};
在編譯它拋出一個錯誤:
error: ‘void*’ is not a pointer-to-object type
有人能解釋我在做什麼錯產生這個錯誤?
是的,有。你有沒有嘗試給'args'另一個數據類型? – Blender
在這個例子中,你沒有任何「抽象類型」(我假設你是指抽象基類)。你可能的意思是'*(arguments *)args',它將'args'從'void *'轉換爲'arguments *',然後_dereference它。你當前的代碼試圖解引用一個'void *'(這是非法的),然後將解引用的值轉換爲'arguments *',這幾乎肯定不是你想要的。 –
@Chris是的,這是我想要做的,謝謝澄清。順便說一句,我認爲結構和類被認爲是抽象類型,例如。 int,float是非抽象的。 –