包括来自另一个文件的运算符重载

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了包括来自另一个文件的运算符重载相关的知识,希望对你有一定的参考价值。

我想使用另一个文件中定义的运算符,如果可能的话,还要使用另一个命名空间,这就是我所拥有的。

(operators.hpp)

#ifndef __OPERATORS__HPP__
#define __OPERATORS__HPP__

#include "proto_handler.hpp"

#include <iostream>

namespace apius {
namespace support {
namespace operators{

std::istream& operator>>(std::istream& in,
                         inventory::proto::item& item);
}
}
}

(operatos.cpp)

#include "operators.hpp"

namespace apius {
namespace support {
namespace operators{

std::istream& operator>>(std::istream& in,
                         inventory::proto::item& item){
    //code here
}

}
}
}

(another_file.cpp)

#include "operators.hpp"

extern std::istream& operator>>(std::istream& in,
                         inventory::proto::item& item);
void test(){
    inventory::proto::item new_item;
    std::cin>>new_item;
}

并且我在包含std :: cin的行中获得了对运算符的未定义引用>

我该怎么做才能使这项工作?

我想使用在另一个文件中定义的运算符,如果可能,还可以使用另一个命名空间,这就是我所拥有的。 (operators.hpp)#ifndef __OPERATORS__HPP__ #define __OPERATORS__HPP__ #include“ ...

答案

基本上,链接器正在努力找到这样的符号,因为没有人。由于C ++名称的混乱,您将在对象文件的符号表中获得类似__ ZN5apius7support9operatorsrsERNSt3__113basic_istream ...

以上是关于包括来自另一个文件的运算符重载的主要内容,如果未能解决你的问题,请参考以下文章

包括来自另一个目录的头文件

如何使用运算符重载来简化两个分数的添加?

C++ 重载 == 比较来自不同类的对象

来自另一个片段的 Snackbar 回调

导航架构片段重载问题

虚拟赋值运算符重载——如何选择正确的重载函数?