在类中实现的 C++ 友元函数无法访问私有
c++ friend function implemented in a class can't access privates
我正在尝试定义两个类,在其中一个类中声明一个友元函数,并在另一个中实现它。事实上,我正试图准确地得到这篇文章中的发现:
如何仅为一个特定的函数和类声明友元函数?
我读了答案,觉得有道理。然后在我的代码中实现了它,它给了我错误:
编辑:
错误1错误LNK2019:函数___tmainCRTStartup中引用了未解析的外部符号_main。。。\MSVCRTD.lib(crtxe.obj)-(通过添加主函数解决)
错误2错误LNK1120:1个未解析的外部。。。\Debug\Project.exe 1 1..-(通过添加主函数解决)
错误3 IntelliSense:成员"one::data1"(在第19行声明)不可访问。。。\Friends.cpp-(即使在清理和重建项目后也存在)
我认为这可能是我如何实现它的问题,所以我复制粘贴到了答案中的代码:
class one;
class two
{
private:
int data2;
public:
two()
{
data2 = 200;
}
// this goes fine, because the function is not yet defined.
int accessboth(one a);
};
class one
{
private:
int data1;
public:
one()
{
data1 = 100;
}
friend int two::accessboth(one a);
};
// don't forget "inline" if the definition is in a header.
inline int two::accessboth(one a)
{
return (a.data1 + (*this).data2);
}
但我在同一个地方得到了同样的错误:a.data1无法访问
然后我搜索并找到了更多的例子,这些例子建议使用相同的技术来解决问题,但它们都在同一个地方给了我相同的无法访问的错误。。。
我有什么东西不见了吗?提供的例子(上一篇文章中提出的解决方案)是否有效?规格可能有什么变化?
谢谢你的帮助。D
第页。S我试着评论上一篇文章,以免对此提出新的问题,但由于声誉不佳而无法发表评论(我是新来的)。
您缺少主函数。例如:
int main() {
one a;
two b;
b.accessboth(a);
}
把它放在文件的底部,它就会编译。
相关文章:
- 如何在函数外部访问函数中局部变量的值?
- UChildActorComponent的ChildActorClass中的访问函数
- 访问函数变体时"Invalid conversion"错误
- 在将向量作为参数传递给函数后,我无法访问函数中向量的元素
- 在64位DLL中访问函数的错误
- 访问函数中 const char *arr[] 的元素
- 访问函数的调用方类型
- 访问函数中的使用声明:与范围相关的问题
- 通过 -> 语法 c++ 从指针访问函数
- 在函数中使用 const 引用参数访问函数中成员的最佳实践 C++.
- 从另一个文件(C++,QT)访问函数未解析的外部
- 如何从主(C )访问函数中的值
- 访问函数 c++ 中的全局变量
- C++ GoogleTest 使用夹具 - 无法访问函数指针定义
- 在不知道名称的情况下访问函数参数
- C++:直接访问器或类内的访问函数
- 无法从对象访问函数
- 类的2D矢量在访问函数时出错
- 为什么在C++中访问函数时没有对象
- 我无法使用指针数组从main访问函数(在类中)