gpt4 book ai didi

c++ - 在没有默认构造函数的情况下将对象实例化为类成员

转载 作者:行者123 更新时间:2023-12-02 03:00:53 26 4
gpt4 key购买 nike

我是 C++ 的新手。我想将一个对象声明为另一个类的私有(private)成员。是否可以在没有默认构造函数的情况下完成该对象的实例化?这里列出了示例代码:

class Vertex{
int i;
public:
Vertex(int j):i(j){};
Vertex(const Vertex & v){i=v.i;};
}

class Test{
Vertex v;
public:
Test(const Vertex & v1){v(v1);}
}

int main()
{//some code here;
Vertex v1(int j=1);
Test(v1); // *error: no matching function for call to 'Vertex::Vertex()'*
return 0;
}

在我看来,一旦将一个对象声明为私有(private)类成员(例如 Vertex v),就会立即寻找默认构造函数。无论如何要避免这种情况?非常感谢。

最佳答案

Vertex v1(int j=1);

这声明了一个函数v1,它返回一个Vertex并接受一个int参数。你想要的是

Vertex v1(1);

此外,您需要使用初始化列表,如其他答案所示:

Test(const Vertex & v1) : v(v1) {}

关于c++ - 在没有默认构造函数的情况下将对象实例化为类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22000295/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com