我在VSC++ 2010中有一个多文件项目,但是由于某种原因,它无法正确链接其中的一些文件。

例如,我有CParser.h和CParser.cpp。 CParser.h只是一些函数声明:

#pragma once
#include <string>

void parseArg(int argc, char* argv[], GVar gv);
void parseCfg(string cfg, GVar gv)

CParser.cpp仅包含实现:
#include <cstdio>
#include <fstream>
#include <cstring>
#include <string>
#include "_GlobalVar.h" //defines GVar, not relevant
#include "CParser.h"

void parseArg(int argc, char* argv[], GVar &gv) {
    /*not really relevant*/
}

错误:



编辑:

还有另一个问题:
template<class T>
void RDAMHandler<T>::clean() {
    long i;
    while(!avtick.empty())
        avtick.pop();
    for(i = v.size() - 1; i >= 0; i--) {
        delete all[i];
        all.pop_back();
        v.pop_back();
    }
}

和声明:
template<class T>
class RDAMHandler {
    vector<T*> all;
    priority_queue<long> avtick;
    vector<bool> v;
public:
    T &operator[](long x);
    long insert(T &x);
    void del(long x);
    void clean();
};

我看不出有什么区别。问题是什么?

编辑编辑:和错误

最佳答案

中CParser.cpp

我认为您必须使用声明
void CParser::parseArg(int argc, char* argv[], GVar &gv)
代替
void parseArg(int argc, char* argv[], GVar &gv)中的CParser.cpp file
并且在中CParser.h

声明应更改为void parseArg(int argc, char* argv[], GVar &gv);
对于下一个错误

供引用,请Go through this
1. Template using class

希望这会帮助你。

10-04 15:05