C ++的头文件和源文件组织

时间:2014-09-09 06:13:39

标签: c++ header include

我知道这似乎是一个常见的问题。但是,我似乎遵循了头文件的所有标准做法和指南,除了我认为不会阻碍编译的包含保护。描述的链接器错误仅在CustomerInformation.h包含在包含main方法的CPlusPlusTraining.cpp中时发生。

这是我用于C ++文件组织信息的一个来源:http://www.umich.edu/~eecs381/handouts/CppHeaderFileGuidelines.pdf

这是我的标题

class CustomerInformation {

public: CustomerInformation();

public: char InformationRequest();

};

来源

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

char InformationRequest() {
      string name;
      string lastName;
      int age;
      cout << "Please input your first and last name then your age: \n";
      cin >> name >> lastName >> age;
      cout << "Customer Information: " << name + " " << lastName + " " << age << "\n";

      char correction;
      cout << "Is all of this information correct? If it is Enter 'Y' if not Enter 'N' \n";
      cin >> correction;

      if (correction == 'N') {
        cout << "Please Enter your information again: \n";
        InformationRequest();
      }

      return correction;
}`

我加入CPlusPlusTraining.cpp

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

头文件和源文件都具有相同的名称。头文件以.h结尾,而源文件以.cpp结尾。但是,编译时我遇到了很多链接器错误。这里有什么问题?我将重复的代码包含在另一天保存。感谢。

我如何使用Main中的方法调用我的文件中的方法

CustomerInformation CI = CustomerInformation::CustomerInformation();
//information request
CI.InformationRequest(); //Not type safe for input

错误详情:

构建开始:项目:CPlusPlusTraining,配置:调试Win32 ------ 1 GT; CPlusPlusTraining.cpp //带Main的文件 1&gt; CPlusPlusTraining.obj:错误LNK2019:未解析的外部符号&#34; public:__ thiscall CustomerInformation :: CustomerInformation(void)&#34; (?? 0CustomerInformation @@ QAE @ XZ)在函数_wmain中引用 1&gt; CPlusPlusTraining.obj:错误LNK2019:未解析的外部符号&#34; public:char __thiscall CustomerInformation :: InformationRequest(void)&#34; (?InformationRequest @ CustomerInformation @@ QAEDXZ)在函数_wmain中引用 1&gt; C:\ Users \ Gordlo_2 \ documents \ visual studio 2013 \ Projects \ CPlusPlusTraining \ Debug \ CPlusPlusTraining.exe:致命错误LNK1120:2个未解析的外部 ==========构建:0成功,1个失败,0个最新,0个跳过==========

1 个答案:

答案 0 :(得分:2)

您在没有类声明的情况下声明了Customer类的成员函数,导致编译器不知道它是您原型化的函数。 它应该是:

 char CustomerInformation::InformationRequest() {
 //your function stuff
 }