【问题标题】:how to declare type conversion in header file and implement in cpp file?如何在头文件中声明类型转换并在cpp文件中实现?
【发布时间】:2010-06-10 15:03:37
【问题描述】:

它对我不起作用。
我有一个头文件和一个 cpp 文件。
需要定义一个从我的类到 INT 的转换运算符,但是在 H 文件中声明它并在 cpp 文件中实现时它给了我“语法错误”。也许我的语法错误? 在我在“公共”中的 H 文件中:

operator int();

在我的 cpp 文件中:

A::operator int() { return mNumber ;}

如果我在 H 文件中实现该功能,它可以工作,但我不想这样做。
谁能帮忙?

【问题讨论】:

  • 我会使用const 的方法。不要认为它会影响问题,但在语义上我怀疑你的转换应该修改A
  • 你能发布错误信息吗?
  • 假设mNumber 是一个int 成员变量,您发布的内容对我有用。正如@avakar 所说,请发布错误。
  • 在 gcc 4.0.3 中编译良好。您收到什么错误消息?
  • 您是否忘记在 cpp 文件中包含 h 文件?有时会发生这样的事情......但知道你遇到了什么错误真的很有帮助

标签: c++ type-conversion operator-overloading


【解决方案1】:

我还想将类声明与实现分开。关键缺失的成分是const

// Foobar.hpp
class Foobar
{
    public:
        Foobar() : _v(42) {}

        operator int() const;

    private:

        int _v;
};

然后在实现文件中:

#include "Foobar.hpp"

Foobar::operator int() const
{
    return _v;
}

看到这个reference

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多