gpt4 book ai didi

c++ - 为什么没有尖括号的非限定模板函数的实例不能成为类的友元?

转载 作者:行者123 更新时间:2023-11-30 03:04:21 26 4
gpt4 key购买 nike

这是我的代码:

#include<iostream>

class foo;
template<typename T> void bar(T a) { std::cout<< a.var; }

class foo {
int var;
public:
friend void bar(foo); //here, bar function template is declared in global namescope,
// deduction can deduce which template instance we're talking about.
//Note: If I place <> just after name bar or qualify bar like ::bar , it all works then.
};

int main() {
foo fooo;
bar(fooo);
}

错误:/home/O1wLF2/cc1xOI20.o:在函数“main”中:prog.cpp:(.text+0x46):未定义对“bar(foo)”的引用

我想知道为什么非限定模板函数的实例不能成为友元?

最佳答案

您正在使非模板函数成为 friend 。您需要告诉编译器您想要将模板作为友元或实例化之一。

关于c++ - 为什么没有尖括号的非限定模板函数的实例不能成为类的友元?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8683925/

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