gpt4 book ai didi

c++ - 不明确的类型引用

转载 作者:行者123 更新时间:2023-11-30 01:29:43 26 4
gpt4 key购买 nike

为什么会这样:

template <typename T> 
struct foo
{
};

struct A
{
typedef foo<A> type;
};

struct B : public A
{
typedef foo<B> type;
};

int main()
{
B::type john;
return 0;
}

但不是这个:

template <typename T> 
struct foo
{
};

template <typename T>
struct Shared
{
typedef foo<T> type;
};

struct A : public Shared<A>
{
};

struct B : public A, public Shared<B>
{
};

int main()
{
// g++ 4.5 says :
// error: reference to 'type' is ambiguous
B::type john;
return 0;
}

在我的代码中,foo 实际上是 boost::shared_ptr 并且,如您所见,我正在尝试分解一些 typedef使用 Shared 类。

最佳答案

因为 B继承foo<B>并且,间接地,foo<A> , 并且都包含一个成员 type .你指的是什么?

您的第一段简单代码有 Btype 隐藏 Atype ,但这不会发生在更复杂的第二段代码中,它涉及更深的继承树。

关于c++ - 不明确的类型引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5445299/

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