头文件和cpp文件的声明c++

declaration of header and cpp files c++

本文关键字:文件 声明 c++ cpp      更新时间:2023-10-16

所以我试图做一个程序,输入存储在一个对象中的3个值和从其他值中的2个生成的第四个值,并将该对象存储到一个向量中。问题是我从generatesignature函数中得到了一个错误,我不知道问题是什么。我认为这可能与我如何声明头文件和其他cpp文件有关,因为我还没有做过很多涉及这些的编程。所以我想看看是否有人能看到我迄今为止所做的一切有什么错误。我得到的错误是LNK1120 1未解析的外部符号,第二个是LNK2019未解析的内部符号

项目.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;
                    }
            }

常数.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

常量.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;
}

不能在声明中使用+=。只需将string signature+=fname;更改为string signature=fname;