gpt4 book ai didi

c++ - 我想在主程序的函数中使用变量集,但是在声明变量时出错

转载 作者:行者123 更新时间:2023-12-02 10:08:00 25 4
gpt4 key购买 nike

我已经声明并在单独的.cpp文件中设置了变量,但没有在主文件中设置。我希望在主程序中使用函数中给定的值。我在主文件,功能文件和头文件下面包括了文件。

main.cpp:

#include <iostream>
#include "create_character.h"

int main() {
set_gender();
set_age();
std::cout << "Your character is a " << age << " year old "
<< gender << "." << std::endl;
}

character.cpp:
#include <iostream>
#include "create_character.h"

std::string set_gender()
{
std::string gender;
std::cout << "Would you like your character to be male or female? Type m for male or f for female.";
std::cin >> gender;

if (gender == "m")
{
gender = "male";
}
if (gender == "f")
{
gender = "female";
}
}

int set_age() {
int age;
std::cout << "How old is your character?";
std::cin >> age;
}

character.h:
#include <string>

std::string set_gender();
int set_age();

最佳答案

您的函数是非空函数,因此它们必须返回一些值。您有一个函数std::string set_gender(),在其中创建了一个变量gender,您设置了该变量,但从未从该函数返回它。这同样适用于int set_age()函数:

int set_age() {
int age;
std::cout << "How old is your character?";
std::cin >> age;
return age;
}

std::string set_gender()
{
std::string gender;
std::cout << "Would you like your character to be male or female? Type m for male or f for female.";
std::cin >> gender;

if (gender == "m")
{
gender = "male";
}
if (gender == "f")
{
gender = "female";
}
return gender;
}

此外,调用这些函数时,必须将其返回值分配给变量,以便以后可以使用返回的值:
int main() {
const std::string gender = set_gender();
const int age = set_age();
std::cout << "Your character is a " << age << " year old "
<< gender << "." << std::endl;
}

请注意,声明变量时,只能在声明该变量的范围内使用该变量。范围由 {}括号给出。因此,当您在 age函数中创建变量 int set_age()时,只能在此 int set_age()函数中使用此变量,而不能在函数外部使用。但是,您可以将值复制到其他变量中- return age;就是这样做的。然后,您可以将此返回值分配给 int main()中的新变量,您可以在 int main()函数范围内使用此变量。

另外,在旁注中-您应该在头文件中使用一些include防护,以确保文件在翻译单元(cpp文件)中仅包含一次。您可以在头文件的开头使用 #pragma once语句,也可以使用更便于移植的预处理器宏来执行此操作:

character.h:
#ifndef PATH_TO_CHARACTER_H_ // include guard
#define PATH_TO_CHARACTER_H_

#include <string>

std::string set_gender();
int set_age();

#endif // PATH_TO_CHARACTER_H_ // end of include guard

关于c++ - 我想在主程序的函数中使用变量集,但是在声明变量时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59227388/

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