【问题标题】:Problems using Borland C++ compiler (version 5.5)使用 Borland C++ 编译器(5.5 版)的问题
【发布时间】:2011-07-15 09:30:54
【问题描述】:

声明:

namespace a {
    namespace b {
        class Classe {
           public:
         Classe();
        };
    }
}

定义:

#include "sample.h"

namespace a {
     b::Classe::Classe(){}
}

但是有了这个定义,我得到了这个错误:

错误 E2038 .\sample.cpp 4: 不能 声明或定义 'b::Classe::Classe()' 在这里

将源更改为:

#include "sample.h"

namespace a {
     namespace b {
          Classe::Classe(){}
     }
}

如何在不更改整个代码的情况下进行编译?

这不是我的选择。其实我是Linux环境下的开发者,从没想过会再在Windows上开发。它适用于仅使用 Borland C++ 编译器的特定客户。

我在 Embarcadero 找到了this wiki page。没有多大帮助。


我放弃了。我正在做雷米说的。

【问题讨论】:

  • 您在类定义中给了Classe::Classe 一个主体。我认为这只是一个声明?
  • Borland C++ 不是最兼容的编译器。它有很多怪癖。这可能就是其中之一!
  • @Hans Passant:你无法想象我想如何从 Borland C++ 更改为 M$、MinGW 编译器。
  • 好吧,下次你最好加倍报价。
  • 汉斯·帕桑特等人。我看到很多话题,人们起初而不是帮助说它是旧的编译器。但有时我们需要它,您认为如何使用 Visual Studio 为 lpt 或 com 端口轻松编译驱动程序,用于 DOS 的 g++?或者您会说从 DOS 迁移到 Windows 更好吗?是的,它更好。但这并不容易。特别是当你有一点时间并且没有地方弄清楚如何在保护模式下使用端口时,这会更加困难......

标签: c++ compiler-errors namespaces borland-c++


【解决方案1】:

尝试删除 .cpp 文件中的命名空间块,并仅限定整个构造函数:

#include "sample.h"

a::b::Classe::Classe(){} 

【讨论】:

  • 我的问题是我必须有很多课程才能应用此更改。我只想在没有解决方法的情况下这样做。
  • 你有多少个文件?您可以使用此正则表达式替换您的代码,如 remy 所说 ([\w_]*::[\w_]*::[\w_]*\() / new_part::$1
  • 好的,我可以这样做,但正如我所说,我只想在没有解决方法的情况下这样做。替换没有问题,例如我可以使用sed。谢谢。
  • @coel 如何使用更新版本的 borland,例如 C++ Builder 2006-2007?从那时起,许多此类错误已得到修复。
  • @Victor 不,我在当前的 C++Builder XE(试用版)上进行了测试:/。谢谢。
【解决方案2】:

如果所有声明都在一个块中,您可以尝试将namespace b { } 更改为struct b { };

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-10
    • 2015-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多