0
我很可能只是在做一些愚蠢的事情,但我無法弄清楚。我有一個名爲的variablelist類多數民衆贊成在.h和.cc文件定義如下:(一些忽略,則.cc文件的)C++找不到類方法定義
部首:
#pragma once
#ifndef _VARIABLELIST_H_
#define _VARIABLELIST_H_
#include "Variable.h"
#include <algorithm>
#include <vector>
using namespace std;
class VariableList
{
public:
VariableList(void);
VariableList(const VariableList &other, bool setLiveness = false, bool liveVal = false);
void Add(const simple_instr* instr);
void Add(Variable var);
void SortAndRemoveDuplicates();
bool CompareLiveness(const VariableList &var);
int size();
vector<Variable>::iterator begin();
vector<Variable>::iterator end();
//Operator Overloads
Variable& operator[] (int i);
protected:
int currentID;
vector<Variable> variableList;
void Add(const simple_reg* ref, bool checkForDuplicated = true);
private:
};
#endif
.cc文件
#include "VariableList.h"
VariableList::VariableList(void)
{
currentID = 0;
}
VariableList::VariableList(const VariableList &other, bool setLiveness = false, bool liveVal = false) //: currentID(0), variableList(other.variableList)
{
currentID = 0;
variableList(other.variableList);
if (setLiveness)
{
for(int i = 0; i < size(); i++)
variableList[i].isLive = LiveVal;
}
}
//Rest Omitted as it doesnt matter for the problem I'm having
我試圖按如下方式使用它:
#include <iostream>
extern "C" {
#include <simple.h>
}
#include<vector>
#include<string>
#include "Instruction.h"
#include "Variable.h"
#include "VariableList.h"
using namespace std;
class VariableList;
simple_instr* do_procedure (simple_instr *inlist, char *proc_name)
{
Instruction inst(*inlist);
Variable var;
cout << var.GetID();
VariableList varList;
return inlist;
}
但每當我嘗試編譯,編譯器說:「不定R參考VariableList :: VariableList()「,就好像它沒有看到我的.cc文件。我需要做更多的事情才能在.cc文件中看到我的定義嗎?
你使用Makefile嗎?你必須將你的目標文件('VariableList.o'和'procedure.o')鏈接在一起...... – filmor 2011-03-10 20:08:31
除了你在命令行上給出的文件外,編譯器從不會看到.cc文件。可能需要將多個'.o'文件鏈接在一起,具體細節取決於您使用的編譯器。 – 2011-03-10 20:09:34
我不認爲你需要'class VariableList'在你最後的代碼示例中。它應該通過包含頭文件來聲明。 – 2011-03-10 20:12:20