简单修改Hello World

时间:2016-08-11 20:26:14

标签: c++ windows console

我是初学者C ++程序员。在某个地方必须有一个简单的错误,但我无法弄清楚它为什么不能编译。

Main.cpp的:

#include <iostream>
#include <string>
#include "GUI.h"
#include "GUI.cpp"

int main()
{
    Display("Hello World!");
    return 0;
}

GUI.h

#pragma once
void Display(std::string param0);

GUI.cpp

#include "GUI.h"
void Display(std::string param0)
{
    std::cout << param0;
}

错误是:

Namespace "std" has no member "string" and "cout"

'String' is not a member of 'std'

'String' undeclared identifier

syntax error: missing ')' before identifier 'param0'

'{': missing function header (old-style formal list?)

但是,当我将代码直接粘贴到Main.cpp创建

#include <iostream>
#include <string>

void Display(std::string param0);

void Display(std::string param0)
{
    std::cout << param0;
}

int main()
{
    Display("Hello World!");
    return 0;
}

它工作正常所以问题可能在于错误地使用了#includes。

我一直认为include指令只是将代码“注入”到main.cpp中,它仅用于组织目的,并将代码分成更小的部分,但现在我很困惑。

此代码应该如何以及为什么?

这段代码中是否有任何糟糕的编程习惯?

编辑:感谢您的帮助,它最终编译,所以我认为应该这样做:

Main.cpp的

#include <iostream>
#include <string>
#include "GUI.h"
int main()
{
    Display("Hello World!");
    return 0;
}

GUI.h

#pragma once
#include <iostream>
#include <string>
void Display(std::string param0);

也可以

完成
#ifndef GUI_H
#define GUI_H
#include <iostream>
#include <string>
void Display(std::string param0);
#endif

GUI.cpp

#include "GUI.h"
void Display(std::string param0)
{
    std::cout << param0;
}

1 个答案:

答案 0 :(得分:0)

您忘记将#include <string>添加到GUI.h。无需包含GUI.cpp文件。