我知道这似乎是一个常见的问题。但是,我似乎遵循了头文件的所有标准做法和指南,除了我认为不会阻碍编译的包含保护。描述的链接器错误仅在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个跳过==========
答案 0 :(得分:2)
您在没有类声明的情况下声明了Customer类的成员函数,导致编译器不知道它是您原型化的函数。 它应该是:
char CustomerInformation::InformationRequest() {
//your function stuff
}