我正在尝试做这样的事情,但我不断收到错误消息:

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无关,而与您已声明它且 undefined 它有关。您得到的是来自链接器的错误,而不是来自编译器的错误。尝试这个:

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

在第二种情况下,这将不起作用。首先,因为您要尝试从A*类型的对象初始化指针(即A类型的变量)。其次,因为即使您做了些更有意义的事情:
A a = A();

不会编译,因为不考虑将explicit构造函数用于复制初始化(使用=符号的初始化形式)。

10-07 15:27