C ++包括标头不起作用

时间:2013-07-10 11:38:28

标签: c++ compiler-errors g++

我正在学习C ++的一些基本概念,但我仍然坚持使用标头使用多个文件。 我有3个文件。

Calculator.h

#ifndef CALCULATOR_H_CAL
#define CALCULATOR_H_CAL
class Calculator{
        int a,b;
        public:
        Calculator();
        Calculator(int,int);
    int op();
};
#endif

Calculator.cpp

#include<iostream>
#include "Calculator.h"

    Calculator::Calculator(){
        a=0;b=0;
    }
    Calculator::Calculator(int c,int d){
        a=c;b=d;    
    }
    int Calculator::op(){
        return a*b;
    }

Main.cpp的

#include<iostream>
#include "Calculator.h"    

int main(){
    Calculator a(2,3);
    int b=a.op();
    std::cout << b;
}

但是用g ++编译Main.cpp会产生错误:

/tmp/cc09isjx.o: In function `main':
Main.cpp:(.text+0x83): undefined reference to `Calculator::Calculator(int, int)'
Main.cpp:(.text+0x8c): undefined reference to `Calculator::op()'
collect2: ld returned 1 exit status

这里有什么问题?

3 个答案:

答案 0 :(得分:4)

你是如何编译代码的?我相信问题是你在编译时没有将计算器文件与主文件链接起来。试试这个:

g++ -c calculator.cpp
g++ main.cpp -o main calculator.o

答案 1 :(得分:1)

如果您没有正确地将文件与main()链接,那么您将无法正确编译它。

试试这个 -

g ++ main.cpp Calculator.cpp

现在应该包含您的头文件。

答案 2 :(得分:0)

您可以使用该命令进行编译:

g++ Main.cpp Calculator.cpp