gpt4 book ai didi

c++ - 从类继承,在不同的命名空间中定义

转载 作者:太空狗 更新时间:2023-10-29 23:19:11 34 4
gpt4 key购买 nike

我有 2 个类,定义在不同的命名空间中:

//--==file1.hpp==--
namespace n1{
class x1 {
//.....
};
};
//--==file2.hpp==--
namespace n2{
class x1: public n1::x1{
//.....
};
};

//--== file3.hpp ==--
namespace n2 {
class x2 {
private:
n1::x1* data1_;
public:
void func(x1* data2) { data1_ = data2; }
};
};

编译失败

error C2440: '=' : cannot convert from `'n2::x1 *' to 'n1::x1 *'`

我不明白什么可能是问题,因为 n2:x1 继承自 n1::x1...?谢谢

最佳答案

从一个命名空间继承到另一个命名空间类,不应该有任何编译错误。只是在子类中,如果必须调用父类(在另一个命名空间)的方法,则应使用完整名称(带namespace)。

供您引用:

namespace a
{
class A1 {
public:
void testA1() {...}
};
}

namespace b
{
class B1: public class a::A1
{
public:
void testB1()
{
a::A1::testA1();
...
}
};
}

但看起来,上面的问题只是一个错字问题,已经解决了。但是,为了阐明用法,示例代码应该有所帮助。

关于c++ - 从类继承,在不同的命名空间中定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10371873/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com