gpt4 book ai didi

C++:初始化变量;重载隐式构造函数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:38:34 25 4
gpt4 key购买 nike

我想重新实现一个我有头文件的库。我不想更改 .h 文件,因为这需要更改使用该库的程序(加上一些法律原因)。编辑:我也无法更改使用库和实例化类 X 的代码!

lib.h 定义了一个类 X(简化版):

class X 
{
public:
bool Function(BOOL q, INT p);
BOOL a;
INT b;
};

(BOOL 和 INT 只是库使用的一些数据类型,这些类包装了基本数据类型 bool 和 int)。

我在 my_lib_implementation.cpp 中实现了这个类:

bool X::Function(BOOL q, INT p)
{
return true;
}

.h 文件没有定义构造函数,所以这意味着有一个隐式构造函数(对吧?)。问题是,我需要初始化变量 a 和 b 以使 Function(BOOL q, INT p) 的实现正常工作。但是,如果我添加以下内容,则会出现编译错误(“错误:隐式声明的‘X::X()’的定义”,gcc 4.4):

X::X()
{
a=true;
b=0;
}

是否可以通过一些我不知道的魔法来重载构造函数?还有其他选项可以初始化变量吗?有一个库的实现(我不能使用),所以它似乎应该可以以某种方式实现?

我这周才开始编程C++(我对其他语言有丰富的经验),所以这个问题可能只是我缺乏基础知识。希望你们能帮帮我!

最佳答案

不,不可能,编译器生成的默认构造函数不能被重载。

但是您可以使用以下语法初始化成员:

X x = {true, 0};

关于C++:初始化变量;重载隐式构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9940584/

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