gpt4 book ai didi

c++ - 在头文件中声明一个类,并根据用户输入初始化该类的数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:20:26 35 4
gpt4 key购买 nike

请查看下面我的 C++ 代码片段。因为 foo.h 在 int main(int argc, char *argv[]) 之前执行,数组 RedApple 将被初始化为 0 并导致错误。处理这个问题的最佳方法是什么?有没有办法将类声明保留在 foo.h 中,但根据用户输入在 foo.cpp 中对其进行初始化?谢谢!

在 foo.h 中

#include <vector>
extern int num;
class apple
{
std::vector<long> RedApple;
public:
apple(): RedApple(num)
}

在 foo.cpp 中

#include    "foo.h"
int num;
int main(int argc, char *argv[])
{
sscanf_s(argv[1],"%d",&num);
}

最佳答案

在 foo.h 中

#include <vector>

class apple
{
std::vector<long> RedApple;
public:
apple(){}
apple(int num): RedApple(num){}
}

在 foo.cpp 中

#include    "foo.h"

int main(int argc, char *argv[])
{
int num;
sscanf_s(argv[1],"%d",&num);

apple foo = num > 0 ? apple(num) : apple();
}

编辑:回应Klaus ' 提示我想我会添加初始化的解释,我正在评论 apple foo = num > 0 行? apple(num) : apple(); 所以我会垂直打破它评论每个词:

apple      // This is the type of variable in the same way int is the type of int num;
foo // The name of the apple object that I am creating
= // Normally this will trigger the assignment operator (but in a declaration line the compiler will optimize it out)
num > 0 ? // The condition to a ternary operator if true the statement before the : is executed if false the one after is executed
apple(num) // If num is greater than 0 use the non-default constructor
: apple(); // If num is less than or equal to 0 use the default number cause we can't initialize arrays negatively

关于c++ - 在头文件中声明一个类,并根据用户输入初始化该类的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27136016/

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