项目中遇到的几个问题

在编译遗留代码的时候突然冒出来这么一个错误 is not a direct base of,着实吓了一跳,这么遇到这么奇怪的错误呢。其实仔细一看,也不是太出乎意料,我将代码缩减了一下,基本思路如下:


class A {
public:
A(int) {}
A(const char*) : A(1) {}
};

int main(int ac, char **av)
{
A a("hello");
}


如果对 C++ 熟悉的人一眼就看出来了错在哪里,在 constructor 中不能调用其他的 constructor。

对了一半,对于 C++11 标准出来之前,确实是这样的,但是新的标准允许码农这么使用,当然了,你需要在编译器的参数上设置好是新的标准即可(-std=c++0x ,保证你的 GCC 版本是大于 4.7才可以这么用 delegated constructor)。

说到 C++ 的新标准,其实还是有不少新的特性可以使用在日常的项目,可以减小一些代码输入,使得一些代码更加精炼。

另外还遇到的一个问题是 cmake 总是默认帮我找到 gcc 这个编译器,但是在这个项目里面我可能需要使用 clang,那么可以通过下面的方式来调用:

cmake -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang .

嗯,我先在这里记下了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值