我正在学习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
这里有什么问题?
答案 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