gpt4 book ai didi

以模板类为参数的C++模板函数

转载 作者:可可西里 更新时间:2023-11-01 18:11:07 27 4
gpt4 key购买 nike

我正在努力处理以下代码。基本上,我有一个 Foo 类和嵌套的 Bar 类,现在我想将 Bar 类对象的指针传递给一个函数,但它无法编译。谁能帮我解决这个问题?谢谢。

template <typename T>
struct Foo
{
struct Bar
{
T data_;
};
Bar bar_;
};

template <typename T>
void func(Foo<T>::Bar* bar) // Why is this line wrong???
{
}

int main()
{
Foo<int> foo;
foo.bar_.data_ = 17;
func(&foo.bar_);
return 0;
}

最佳答案

您需要有以下签名

template <typename T>
void func(typename Foo<T>::Bar* bar) // Why is this line wrong???

然而,这不是唯一的问题

func(&foo.bar_);

还需要

func<int>(&foo.bar_);

这是因为您正在调用模板函数“func”,但无法推断出其类型。没有它的类型,它会给出一个错误,例如

no matching function for call to 'func(Foo<int>::Bar*)'

关于以模板类为参数的C++模板函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9843671/

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