簡體   English   中英

指向具有顯式構造函數的對象

[英]Pointer to an object with explicit constructor

我正在嘗試做這樣的事情,但我不斷收到錯誤消息:

class A {
public:
    explicit A();
}

A * a = new A(); //results in:  undefined reference to A()

我也嘗試過:

A * a = A(); //results in cannot convert A to A * in assignment

有沒有辦法做到這一點? 我將非常感謝您的幫助。

在第一種情況下,問題與構造函數是explicit的事實無關,而與您已聲明並沒有定義它的事實無關。 您得到的是來自鏈接器的錯誤,而不是來自編譯器的錯誤。 嘗試這個:

 class A {
 public:
     explicit A() { /* Or anything more meaningful than just doing nothing */ }
 };

在第二種情況下,這將不起作用。 首先,因為您正在嘗試從類型A的對象初始化指針(即類型A*的變量)。 其次,因為即使您做了更有意義的事情:

A a = A();

不會編譯,因為不考慮將explicit構造函數用於復制初始化 (使用=符號的初始化形式)。

您沒有提供構造函數的主體。 嘗試:

class A {
public:
    explicit A() {}
}

explicit關鍵字僅表示它防止類型轉換,這是第二個錯誤所要表達的意思。

暫無
暫無

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

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