函数必须返回一个值 我试图制作一个基于文本的RPG,我对C++来说是相当新的。我知道我需要返回一个值,但当我尝试返回CharacterName或CharacterRace时,会出现未解决的外部错误。我真的很感谢你们的帮助,谢谢:)

函数必须返回一个值 我试图制作一个基于文本的RPG,我对C++来说是相当新的。我知道我需要返回一个值,但当我尝试返回CharacterName或CharacterRace时,会出现未解决的外部错误。我真的很感谢你们的帮助,谢谢:),c++,C++,角色创造 #include <string> #include <iostream> void petc(), ConsoleClear(), petc(), EnterClear(); std::string CharacterName, CharacterRace; #包括 #包括 void petc()、ConsoleClear()、petc()、EnterClear(); std::string CharacterName,CharacterRace; M

角色创造

#include <string>
#include <iostream>

void petc(), ConsoleClear(), petc(), EnterClear();

std::string CharacterName, CharacterRace;
#包括
#包括
void petc()、ConsoleClear()、petc()、EnterClear();
std::string CharacterName,CharacterRace;
Main.cpp

#include <iostream>
#include <limits>
#include <string>
#include <string.h>
#include "CharacterCreation.h"

std::string CharacterCreation();


int main()
{
    CharacterCreation();

}



std::string CharacterCreation(int RaceChoice, int RaceChoiceLoop)
{

RaceChoiceLoop = 0;
std::cout << "Welcome to the character creation V 1.0.0" << std::endl;
EnterClear();
std::cout << "Choose a name: ";
std::cin >> CharacterName;
std::cout << CharacterName << std::endl;

EnterClear();

while (RaceChoiceLoop == 0)
{

    std::cout << "(1) Human - Human's race perks: + 5 to Magic | + 1 to         Sword Skill" << std::endl;
    std::cout << "(2) Elf - Elve's race perks: + 5 to Archery | + 1 to Magic" << std::endl;
    std::cout << "(3) Dwarf - Dwarven race perks: + 5 to Strength | + 1 to Archery" << std::endl;
    std::cout << "Choose a race, " << CharacterName << ": ";
    std::cin >> RaceChoice;

    if (RaceChoice == 1)
    {
        RaceChoiceLoop = 1;
        CharacterRace = "Human";
    }

    else if (RaceChoice == 2)
    {
        RaceChoiceLoop = 1;
        CharacterRace = "Elf";
    }

    else if (RaceChoice == 3)
    {
        RaceChoiceLoop = 1;
        CharacterRace = "Dwarf";
    }

    else
    {
        std::cout << "Invalid Option";
        EnterClear();
        RaceChoiceLoop = 0;

    }

}






}



void petc()
{
    std::cout << "Press Enter To Continue...";
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}




void EnterClear()
{
    std::cout << "Press Enter To Continue...";
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    system("cls");

}



void ConsoleClear()
{
    system("cls");
}
#包括
#包括
#包括
#包括
#包括“CharacterCreation.h”
std::string CharacterCreation();
int main()
{
CharacterCreation();
}
std::字符串字符创建(int-RaceChoice、int-RaceChoiceLoop)
{
RaceChoiceLoop=0;

std::cout声明的std::string函数应返回字符串,这与在屏幕上打印字符串不同,请使用返回“something”在函数内部,否则声明它为void

已声明的std::string函数应返回字符串,这与在屏幕上打印不同,请使用返回“某物”在函数内部,否则将其声明为void

问题是函数
CharacterCreation()
(不带参数)从未定义过,因此链接器无法找到它

尝试在以下内容中替换:

std::字符串字符创建(int,int)

int main() { 人物塑造(1,1); }


这将调用您在
main
函数下实现的
CharacterCreation
函数。这样做我可以编译(并链接)您的代码:)

问题是函数
CharacterCreation()
(不带参数)从未定义过,因此链接器找不到它

尝试在以下内容中替换:

std::字符串字符创建(int,int)

int main() { 人物塑造(1,1); }

这将调用您在
main
函数下实现的
CharacterCreation
函数。这样我可以编译(并链接)您的代码:)

返回值不会直接导致“未解析外部”消息。
这是一个链接器错误,仅在编译成功时发生

原因是您正在声明并调用此无参数函数:

std::string CharacterCreation();
但您使用两个参数定义此函数:

std::string CharacterCreation(int RaceChoice, int RaceChoiceLoop)
声明和定义必须匹配

从外观上看,您实际上并不需要参数,而是应该使用局部变量:

std::string CharacterCreation()
{
    int RaceChoice = 0;
    int RaceChoiceLoop = 0;
    // ...
“unresolved externals”消息不是由您返回的值直接导致的。
这是一个链接器错误,仅在编译成功时发生

原因是您正在声明并调用此无参数函数:

std::string CharacterCreation();
但您使用两个参数定义此函数:

std::string CharacterCreation(int RaceChoice, int RaceChoiceLoop)
声明和定义必须匹配

从外观上看,您实际上并不需要参数,而是应该使用局部变量:

std::string CharacterCreation()
{
    int RaceChoice = 0;
    int RaceChoiceLoop = 0;
    // ...

正如我在之前的评论中所指出的,您的CharacterCreation方法不会返回任何值,尽管您已经将字符串定义为预期值

您最可能要做的是将CharacterCreation签名更改为:

void CharacterCreation(int RaceChoice, int RaceChoiceLoop)
并保持目前的执行情况

或者将所有控制台输出打包成字符串,并在方法末尾返回

那么主要是()


可以检索此值,并且可以在main中打印它

正如我在之前的评论中指出的,您的CharacterCreation方法不会返回任何值,尽管您已将字符串定义为预期值

您最可能要做的是将CharacterCreation签名更改为:

void CharacterCreation(int RaceChoice, int RaceChoiceLoop)
并保持目前的执行情况

或者将所有控制台输出打包成字符串,并在方法末尾返回

那么主要是()


您可以检索此值,并可以在main中打印它。

不要忘记在
main
@NendoTaka NO中返回。您不需要在
main
中返回,除非您想返回非零状态。@vsoftco是的,您确实需要返回值,即使返回值为零。@vsoftco这不是必需的,但如果您定义了,这就是答案字符串作为方法的返回值,您必须在某一点返回字符串:),正如我在上面的评论中提到的,不要忘记在
main
@NendoTaka NO中返回。您不需要在
main
中返回,除非您想返回非零状态。@vsoftco是的,您确实需要返回值,即使返回值为零。@vsoftco这不是必需的ed但这是一个很好的实践,因此这就是答案,如果将字符串定义为方法的返回值,则必须在某一点返回字符串:),正如我在上面的注释中提到的,直到收到此错误:错误1错误C4716:“CharacterCreation”:必须返回值c:\users\jake\documents\visual studio 2013\projects\characterselection\character选择\main.cpp 72 1CharacterSelection@LilJakers这是另一个错误。将返回
std::string
return
语句放在
CharacterCreation
的底部。这可能是因为编译器设置的限制性比它们应该的更大,至少根据这一点。仍然收到此错误:error 1 err或C4716:“CharacterCreation”:必须返回值c:\users\jake\documents\visual studio 2013\projects\characterselection\characterselection\main.cpp 72 1CharacterSelection@LilJakers这是另一个错误。在
CharacterCreation
的底部放一个
return
语句,返回一个
std::string
。可能是因为你的编译器设置比应该的限制更严格,至少根据这一点。非常感谢,你是对的,我需要将它们设置为局部变量而不是参数,第一课学习非常感谢你花时间帮助我。与此同时,错误是:错误1错误C4716:'字符