将g ++代码移植到Clang ++问题

时间:2014-08-27 21:50:39

标签: c++ g++ clang++ llvm-clang

以下代码是一个假设的代码。这是g ++(4.2.1)下完全有效的代码。使用Clang ++(4.2)编译时,会产生错误qualified reference to 'myclass' is a constructor name rather than a type wherever a constructor can be declared

class myclass
{
public:
    myclass() { }
    ~myclass() {}

};

myclass::myclass* funct() {
    return new myclass();
}

我可以通过将myclass::myclass*更改为myclass*来解决此问题。但是我不希望更改任何代码。是否有任何命令行标志,我可以使用Clang ++编译此代码?

2 个答案:

答案 0 :(得分:4)

不,没有这样的标志:因为这个程序格式不正确,所以不应该编译。

如果编译器编译它,那么它就是编译器错误。 This bug report看起来像是影响你特定gcc版本的那个。

代码应固定为:

myclass* funct() {
    return new myclass();
} 

答案 1 :(得分:3)

gcc 4.9.1也拒绝代码:

 error: ‘myclass::myclass’ names the constructor, not the type

除非代码库对相当旧的gcc 4.2感到满意,否则我认为除了修复代码之外别无选择。