gpt4 book ai didi

c++ - 使用 C++ 并尝试 "nest"一些代码

转载 作者:太空狗 更新时间:2023-10-29 19:37:22 25 4
gpt4 key购买 nike

我目前正在尝试用 C++ 创建一个基本的问答游戏。

当我尝试运行以下代码时会抛出错误,如果我不在主类中使用 answer("answer") 而是将其替换为实际代码,它就会工作。

我想“嵌套”(我不知道这个技术术语)一些代码,这样我就不必每次都把它写出来,正如你所看到的,我希望写下任何问题,然后回答(“回答”)。

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;

int main()
{
cout << "QUIZ C++ EDITION!\n";
cout << "Question 1:\n";
cout << "What is the colour you get when you mix red and yellow?\n\n";

question("Orange");

system("PAUSE");
}

void question(string answer) {
string input;

getline(cin, input);

if (input == answer) {
cout << "\nCorrectimundo!\n";
}
else
{
cout << "\nWrongimundo.\n";
}
return;
}

我觉得这是语法错误的情况,但不幸的是,IDE 没有向我显示错误所在,它只在我运行程序时发生。

最佳答案

It looks like you are trying to make a function. Can I help?

– Clippy (1997-2007 安息) enter image description here

有两种方法可以做到这一点。一种是在首次使用之前转发声明问题

void question(string answer);

int main()
{
...
question("Orange")
...
}

void question(string answer)
{ ... }

前向声明是对编译器的 promise ,即 question 将在其他地方完全定义,可能稍后在此文件中,可能在另一个文件中,可能在库中。但它必须在某处定义,否则程序会编译,但不会链接。

另一个是在首次使用之前完全定义question

void question(string answer)
{ ... }

int main()
{
...
question("Orange")
...
}

我更喜欢第二种方法,因为没有可能落入这样的陷阱:

void question(int answer);

int main()
{
...
question(42)
...
}

void question(string answer)
{ ... }

并且由于更改 question 的前向声明而忘记更改定义而导致链接器错误。

关于c++ - 使用 C++ 并尝试 "nest"一些代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37197365/

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