c++ 简单类用法+未定义引用

nkoocmlb  于 2023-05-02  发布在  其他
关注(0)|答案(2)|浏览(134)

我刚刚创建了这个简单的类。当我编译时,我得到以下错误。

caller.o: In function 'main':
caller.cpp:(.text+0x15): undefined reference to 'Reader::Reader(int)'
collect2: ld returned 1 exit status

Reader.h

#ifndef READER_H
#define READER_H
class Reader
{
 private:
  int m_month;
  Reader() {}
 public:
  Reader(int month);
 void SetDate(int month);
 int GetMonth() {return m_month;}
 };
 #endif

Reader.cpp

#include "Reader.h"
Reader::Reader(int month);
{
  SetDate(month);
}
void Reader::SetDate(int month)
{
  m_month=month;
}

主程序

#include <iostream>
 using namespace std;
#include "Reader.h"
int main()
{ int i;
  i=5;
  Reader rd(i);
  i=rd.GetMonth();
  cout<<i;
  return 0;
 }
ukxgm1gy

ukxgm1gy1#

有一个不应该出现的;分号。

Reader::Reader(int month)//; remove semicolon from this line !!!
{
    SetDate(month);
}
e5nqia27

e5nqia272#

您需要将所有源文件编译为目标文件,然后将目标文件链接在一起以生成程序。
这可以在一个步骤中完成:

gcc Reader.cpp main.cpp

或者在两个单独的步骤中:

gcc -c Reader.cpp main.cpp
gcc Reader.o main.o

当然,你通常应该有一个IDE,Makefile或构建系统生成器(如CMake)来为你处理这个问题。

相关问题