Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在int main中访问val1和val2?_C++_Oop - Fatal编程技术网

C++ 如何在int main中访问val1和val2?

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

我曾尝试在main和get()中使用范围解析,但似乎我在这里没有做任何正确的事情

#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
是(理论上)更快,因为它不会复制对象,而只传递一个对它的引用。复制对象,尤其是大的对象,可能会很昂贵。传递引用很便宜。另外,通过标记reference
const
,编译器可以更好地优化代码,因为您让它知道您不会更改对象。@Mestkon:From C++20,you可以使用
std::middpoint
来表示两个值的平均值。这将处理溢出等问题。