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