gpt4 book ai didi

c++ - 显式初始化成员是什么意思?

转载 作者:太空宇宙 更新时间:2023-11-04 14:54:50 24 4
gpt4 key购买 nike

在下面的代码中

class someClassB;

class someClassA
{
public:
someClassA(int x, int y);
private:
someClassB* B;
};

class someClassB
{
public:
someClassB(int x, int y);
private:
int x;
int y;
someClassA A;
};

someClassA::someClassA(int i, int j)
{
B->x = i;
B->y = j;
}

someClassB::someClassB(int i, int j)
{
x = i;
y = j;
A = new someClassA(i, j);
}

为什么我会收到一条错误消息“‘someClassB’的构造函数必须显式初始化没有默认构造函数的成员‘A’”?我不是在 someClassB 的构造函数中初始化“A”吗?

最佳答案

someClassA 没有默认构造函数。目前, someClassB 需要默认初始化它,导致你引用的编译错误。 .您需要使用可用的构造函数之一显式初始化 someClassA 数据成员。例如,

someClassB::someClassB(int i, int j) : x(i), y(j), A(i, j)
{
}

这里,xy也在构造函数初始化列表中初始化,而不是默认初始化然后赋值,如在您的代码中。

另请注意,一般来说,这在 C++ 中没有意义:

A = new someClassA(i, j);

new 返回一个指针。

关于c++ - 显式初始化成员是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21016753/

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