gpt4 book ai didi

c++ - 如何在构造函数中初始化 C++ 对象成员变量?

转载 作者:IT老高 更新时间:2023-10-28 13:20:49 27 4
gpt4 key购买 nike

我有一个有几个对象作为成员变量的类。我不希望在声明时调用这些成员的构造函数,所以我试图明确地卡在指向对象的指针上。我不知道我在做什么。

我想也许我可以做以下事情,在初始化对象成员变量时立即调用构造函数:

class MyClass {
public:
MyClass(int n);
private:
AnotherClass another(100); // Construct AnotherClass right away!
};

但我希望 MyClass 构造函数调用 AnotherClass 构造函数。这是我的代码的样子:

文件BigMommaClass.h

#include "ThingOne.h"
#include "ThingTwo.h"

class BigMommaClass {

public:
BigMommaClass(int numba1, int numba2);

private:
ThingOne* ThingOne;
ThingTwo* ThingTwo;
};

文件BigMommaClass.cpp

#include "BigMommaClass.h"

BigMommaClass::BigMommaClass(int numba1, int numba2) {
this->ThingOne = ThingOne(100);
this->ThingTwo = ThingTwo(numba1, numba2);
}

这是我尝试编译时遇到的错误:

g++ -Wall -c -Iclasses -o objects/BigMommaClass.o classes/BigMommaClass.cpp
In file included from classes/BigMommaClass.cpp:1:0:
classes/BigMommaClass.h:12:8: error: declaration of âThingTwo* BigMommaClass::ThingTwoâ
classes/ThingTwo.h:1:11: error: changes meaning of âThingTwoâ from âclass ThingTwoâ
classes/BigMommaClass.cpp: In constructor âBigMommaClass::BigMommaClass(int, int)â:
classes/BigMommaClass.cpp:4:30: error: cannot convert âThingOneâ to âThingOne*â in assignment
classes/BigMommaClass.cpp:5:37: error: â((BigMommaClass*)this)->BigMommaClass::ThingTwoâ cannot be used as a function
make: *** [BigMommaClass.o] Error 1

我是否使用了正确的方法,但语法错误?还是我应该从不同的方向来?

最佳答案

您可以在成员初始化器列表中指定如何初始化成员:

BigMommaClass {
BigMommaClass(int, int);

private:
ThingOne thingOne;
ThingTwo thingTwo;
};

BigMommaClass::BigMommaClass(int numba1, int numba2)
: thingOne(numba1 + numba2), thingTwo(numba1, numba2) {}

关于c++ - 如何在构造函数中初始化 C++ 对象成员变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12927169/

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