为什么我的C++类定义失败

Why my C++ class definition fails?

本文关键字:定义 失败 C++ 我的 为什么      更新时间:2023-10-16

main.cpp

#include <iostream>
#include "Burrito.h"
using namespace std;
int main(){
  Burrito b;
  return 0;
}

墨西哥卷饼

#ifndef BURRITO_H
#define BURRITO_H
class Burrito{
    public:
      Burrito();
};
#endif

墨西哥卷饼.cpp

#include "Burrito.h"
#include <iostream>
Burrito::Burrito(){
}

编译和链接:

lzsb$ g++ main.cpp -o main
Undefined symbols for architecture x86_64:
  "Burrito::Burrito()", referenced from:
      _main in ccVpCr0z.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
lzsb$ 

平台:

Mac OS 10.6.8
G++ : i686-apple-darwin10 --with-gxx-include-dir=/usr/include/c++/4.2.1

您还需要编译Burrito.cpp文件。编译器从每个.cpp文件创建对象文件,然后链接它们。这是调用失败的地方,因为链接器在任何对象文件中都找不到引用的Burrito类。要修复编译器调用,只需添加Burrito.cpp

g++ main.cpp Burrito.cpp -o main

你的编译行应该是:

g++ 墨西哥卷饼.cpp main.cpp -o main

相关文章: