C++ 如何在int main中访问val1和val2?
我曾尝试在main和get()中使用范围解析,但似乎我在这里没有做任何正确的事情C++ 如何在int main中访问val1和val2?,c++,oop,C++,Oop,我曾尝试在main和get()中使用范围解析,但似乎我在这里没有做任何正确的事情 #include <iostream> using namespace std; class base { public: float val1, val2; void get() { cout << "Enter two values..." << endl, cin >> val1 >> val2; } frie
#include <iostream>
using namespace std;
class base {
public:
float val1, val2;
void get() { cout << "Enter two values..." << endl, cin >> val1 >> val2; }
friend float mean(base ob);
};
float mean(base ob) { return float(ob.val1 + ob.val2) / 2; }
int main() {
base obj;
obj.get();
cout << "Mean of " << val1 << " and " << val2 << " is: " << mean(obj);
return 0;
}
#包括
使用名称空间std;
阶级基础{
公众:
浮动val1,val2;
void get(){cout val1>>val2;}
朋友浮动平均值(基本ob);
};
浮点数平均值(基本浮点数){返回浮点数(ob.val1+ob.val2)/2;}
int main(){
基本对象;
obj.get();
cout首先,您需要使val1
和val2
可以从课外访问:
。。。
阶级基础{
公众:
浮动val1,val2;
公众:
...
然后,您需要指定要访问属于对象的obj
的val1
和val2
:
什么让你认为你应该能够从main
访问它们?你不是宣布它们是私有的并且必须让成为朋友的人吗?@molbdnilo我也把它公开了,但它仍然不起作用什么是错误消息?val1
和val2
是base。您需要一个base
实例,其成员可以访问该实例。请不要根据注释或答案中的解决方案修复问题中的代码。损坏的代码属于问题,修复的代码用于回答为什么mean
的定义为“更好”?重新定义mean
是(理论上)更快,因为它不会复制对象,而只传递一个对它的引用。复制对象,尤其是大的对象,可能会很昂贵。传递引用很便宜。另外,通过标记referenceconst
,编译器可以更好地优化代码,因为您让它知道您不会更改对象。@Mestkon:From C++20,you可以使用std::middpoint
来表示两个值的平均值。这将处理溢出等问题。