以下代码是一个假设的代码。这是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 ++编译此代码?
答案 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感到满意,否则我认为除了修复代码之外别无选择。