gpt4 book ai didi

c++ - c++中友元声明的内容错误基础

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

我只是不明白,这个 friend 声明有什么问题,第一个错误消息:

test.cpp: In function 'int main()':
test.cpp:34:7: error: 'void steuerung::exe_testa(testa)' is private
test.cpp:48:15: error: within this context

当 testa 的类声明中的构造函数被删除时,问题就解决了。但我需要一个构造函数。谁能帮帮我吗?真的谢谢你。

#include <iostream>

class steuerung;
class testb;
class testa;

class testa
{
friend class steuerung;
public:

private:
double a_;
double b_;
};

class testb
{
friend class steuerung;
public:
testb(double a, double b) : a_(a), b_(b) {}

private:
double a_;
double b_;
};

class steuerung
{
friend class testa;
friend class testb;
void exe_testa(testa t_) { t_.b_++; }
//template<class t> void exe(t *t_) { std::cout << t_->a_ << std::endl; }
};




int main ()
{
std::cout << "Laeuft zumindest an.." << std::endl;

testa a;

steuerung s;
s.exe_testa(a);

return 0;
}

最佳答案

exe_testa 是私有(private)的,因此只能从 steuerung 的成员函数、steuerung 的友元类的成员函数以及steuerung 的友元函数。 main 不是这些,因此调用不合法。

关于c++ - c++中友元声明的内容错误基础,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14584294/

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