2011-03-10 88 views
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文件中看到我的定義嗎?

+0

你使用Makefile嗎?你必須將你的目標文件('VariableList.o'和'procedure.o')鏈接在一起...... – filmor 2011-03-10 20:08:31

+0

除了你在命令行上給出的文件外,編譯器從不會看到.cc文件。可能需要將多個'.o'文件鏈接在一起,具體細節取決於您使用的編譯器。 – 2011-03-10 20:09:34

+0

我不認爲你需要'class VariableList'在你最後的代碼示例中。它應該通過包含頭文件來聲明。 – 2011-03-10 20:12:20

回答

2

編譯時是否添加了所有的.cc文件?

g++ -o myExecuatable file1.cc file2.cc file3.cc ...

+0

這是它,謝謝 – Megatron 2011-03-10 20:22:19