小编use*_*176的帖子

C++ 中的协变返回类型到底是什么?

当我尝试执行此操作时出现编译错误:

class A
{
    virtual std::vector<A*> test() { /* do something */ };
}

class B: public A
{
    virtual std::vector<B*> test() { /* do something */ };
}
Run Code Online (Sandbox Code Playgroud)

我假设 A 和 B 是协变类型,因此 A* 和 B* 也应该是(正确的?)通过推断,我本来期望 和 也std::vector<A*>应该std::vector<B*>是协变的,但情况似乎并非如此。为什么?

c++ virtual inheritance vector covariant

3
推荐指数
1
解决办法
3133
查看次数

Fortran,ISO C BINDING和std :: string

我有一个带签名的c ++方法

extern std::string os_dtoa_format(double  x);
Run Code Online (Sandbox Code Playgroud)

我想从Fortran打来电话.我知道我必须构建一个显式接口,但我不确定如何去做.我对如何处理double有一个模糊的想法,但我还没有找到关于std :: string的任何信息.char*似乎很难,这让我想问是否有可能做我想做的事.

c++ fortran fortran-iso-c-binding

1
推荐指数
1
解决办法
858
查看次数