我正在尝试编写一个程序,我输入存储在一个对象中的3个值,以及我从其他两个值生成的第四个值,然后将该对象存储到一个向量中。
问题是我从generateSignature()
函数收到错误,我不知道问题是什么。我认为这可能与我如何声明头文件和另一个.cpp文件有关,因为我还没有完成很多涉及这些的编程。所以我要问看看有没有人能看到我到目前为止所做的任何事情。
我得到的错误是:
LNK2019 unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl generateSignature(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::vector<struct Data,class std::allocator<struct Data> > &)" (?generateSignature@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@0AAV?$vector@UData@@V?$allocator@UData@@@std@@@2@@Z) referenced in function _main ProjektKurs C:\Users\Fredrik\documents\visual studio 2015\Projects\ProjektKurs\ProjektKurs\ProjektKurs.obj
Project.cpp
:
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <string>
#include <cstdlib>
#include "constants.h"
using namespace std;
int main()
{
vector<Data> dataVector;
struct Data newdata;
newdata.fname = "testfname";
newdata.lname = "testlname";
//add signature
newdata.signature = generateSignature("testfname","testlname",dataVector);
newdata.height = 1.85;
dataVector.push_back(newdata);
for (int i = 0; i < dataVector.size();i++) {
cout << dataVector.at(i).fname << " " << dataVector.at(i).lname + " " + dataVector.at(i).signature << " " << dataVector.at(i).height << endl;
}
}
constants.h
:
#pragma once
#ifndef CONSTANTS_H
#define CONSTANTS_H
#include <string>
#include <vector>
using namespace std;
struct Data {
string fname;
string lname;
string signature;
double height;
};
string generateSignature(string fname, string lname, vector<Data>& data);
#endif
constants.cpp
:
#include "stdafx.h"
#include "constants.h"
#include <iostream>
#include <string>
#include <vector>
using namespace std;
string generateSignature(string fname, string lname, vector<Data>& data) {
string signature+=fname;
signature+="test123";
//some random code for the vector
return signature;
}