zoukankan      html  css  js  c++  java
  • 内联函数声明与实现分为两个文件导致编译出错问题

    // TestA.h
    class
    TestA { public: inline const char* GetName()const{return "Hello world";} };

    以上代码编译no problem。因为声明与实现在一起,但是在实际项目中声明与实现是肯定不允许放在一起的。那么怎么办呢?

    往下看:

    // TestB.h
    class TestB
    {
    public:
       inline const char* GetName()const; 
    };
    // TestB.cpp
    
    const char* TestB::GetName()const
    {
      return "Hello world";  
    }

    TestB与TestA一致,但是就是无法编译。原因就在于内联函数的声明与定义,必须在同一个文件。

    也就是说要么在.h文件中声明并实现,要么在.cpp文件中声明和实现。

    // TestC.h
    class TestC
    {
    public:
        inline const char* GetName()const;
    }
    
    const char* TestC::GetName()const
    {
        return "Hello world";
    }
    // TestD.cpp
    class TestD
    {
    public:
        inline const char* GetName()const;
    }
    
    const char* TestD::GetName()const
    {
        return "Hello world";
    }

    以上代码都可以编译通过。

  • 相关阅读:
    mysql 数据库字符集问题
    适配器模式
    thinkphp学习笔记
    StarDict
    dereferencing pointer to incomplete type
    转载的一篇 关于git的
    策略模式
    让你的Ubuntu看的更顺眼些
    vim 配置
    .NET WEB SERVICE 学习记录
  • 原文地址:https://www.cnblogs.com/LandyTan/p/10526913.html
Copyright © 2011-2022 走看看