linux 文件的多链接,GCC 如何实现多文件正确编译与链接(求解)

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

//miniqueue.h

#ifndef MINIQUEUE_H

#define MINIQUEUE_H

#include

using std::list;

template

class MiniQueue

{

public:

MiniQueue();

~MiniQueue();

T& front();

const T& front()const;

T& back();

const T& back()const;

void push(const T&);

void pop();

bool empty()const;

int size()const;

private:

list qlist;

};

#endif

//miniqueue.cpp

#include

#include"miniqueue.h"

using std::list;

template

MiniQueue::MiniQueue()

:qlist(0)

{}

template

MiniQueue::~MiniQueue()

{}

template

T& MiniQueue::front() { return qlist.front(); }

template

const T& MiniQueue::front()const

{ return qlist.front(); }

template

T& MiniQueue::back() { return qlist.back(); }

template

const T& MiniQueue::back()const { return qlist.back(); }

template

void MiniQueue::push(const T& item) qlist.push_back(item); }

template

void MiniQueue::pop() { qlist.pop_front(); }

template

bool MiniQueue::empty()const{ return qlist.empty();}

template

int MiniQueue::size()const{ return qlist.size(); }

//main.cpp

#include

#include

#include"miniqueue.h"

int main()

{

MiniQueue oddQueue,evenQueue;

srand(time(0));

int number;

for(int i=0;i<20;i++){

number=rand()%100;

if(number%2==0)

evenQueue.push(number);

else

oddQueue.push(number);

}

while(!evenQueue.empty()){

std::cout<

evenQueue.pop();

}

std::cout<<:endl>

while(!oddQueue.empty()){

std::cout<

oddQueue.pop();

}

std::cout<<:endl>

return 0;

}

g++ -c miniqueue.cpp //终端无输出

g++ -c main.cpp //终端无输出

g++ miniqueue.o main.o -o main终端输出如下:

main.o: In function `main':

main.cpp:(.text+0x12): undefined reference to `MiniQueue::MiniQueue()'

main.cpp:(.text+0x1e): undefined reference to `MiniQueue::MiniQueue()'

main.cpp:(.text+0x86): undefined reference to `MiniQueue::push(int const&)'

main.cpp:(.text+0x9c): undefined reference to `MiniQueue::push(int const&)'

main.cpp:(.text+0xbb): undefined reference to `MiniQueue::front()'

main.cpp:(.text+0xe9): undefined reference to `MiniQueue::pop()'

main.cpp:(.text+0xf5): undefined reference to `MiniQueue::empty() const'

main.cpp:(.text+0x11e): undefined reference to `MiniQueue::front()'

main.cpp:(.text+0x14c): undefined reference to `MiniQueue::pop()'

main.cpp:(.text+0x158): undefined reference to `MiniQueue::empty() const'

main.cpp:(.text+0x184): undefined reference to `MiniQueue::~MiniQueue()'

main.cpp:(.text+0x190): undefined reference to `MiniQueue::~MiniQueue()'

main.cpp:(.text+0x1a8): undefined reference to `MiniQueue::~MiniQueue()'

main.cpp:(.text+0x1b8): undefined reference to `MiniQueue::~MiniQueue()'

collect2: ld 返回 1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值