gpt4 book ai didi

C++模板化类和构造函数中的init

转载 作者:行者123 更新时间:2023-11-27 23:29:24 25 4
gpt4 key购买 nike

我有一个模板类,Foo:

template <class A, class B>
class Foo
{
public:
Foo(A &aInstance);

private:
Attr<Foo> _attr;
};

然后我有另一个名为 Attr 的模板化类,它是我的 Foo 类的一个属性,并将 Foo 类本身作为模板参数。

template <class C>
class Attr
{
class SomeType
{
SomeType();
~SomeType();
};

Attr(const SomeType* st);
~Attr();

private:
Attr();
}

我想在构造函数中初始化 _attr(Attr 类型),将模板中的第一个参数转换为 SomeType。

Foo 构造函数实现:

template<class A, class B>
Foo<A, B>::Foo(A &aInstance):
_attr(
(Attr<Foo<A, B> >::SomeType *) aInstance)
{

}

这不会编译:

错误:')' 标记前应为主表达式

该错误指的是 Foo 构造函数实现中的转换行,就好像无法识别 SomeType 一样。

我现在有一个实例,但仍然有同样的错误。

最佳答案

template<class A, class B>
Foo<A, B>::Foo():
_attr(
(Attr<Foo<A, B> >::SomeType *) A)
{

}

A 是一种类型,您正试图将其传递给构造函数。这里需要一个实例。

关于C++模板化类和构造函数中的init,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6611158/

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