首页 > 解决方案 > 如何在 int main 中访问 val1 和 val2?

问题描述

我曾尝试将范围解析与 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;
}

标签: c++oop

解决方案


首先,您需要从课堂之外进行制作val1val2访问:

...
class base {
    public:
        float val1, val2;
    public:
...

然后你需要指定你想要访问val1并且val2属于 object obj

cout<<"Mean of "<<obj.val1<<" and "<<obj.val2<<" is: "<<mean(obj);

你也可以mean()做得更好一点:

float mean(const base& ob) {
    return float(ob.val1+ob.val2)/2;
}

如果您不想公开valval2那么您可以创建将返回其值的公开方法:

class base {
  float val1, val2;
public:
  auto get_val1() const { return val1; }
  auto get_val2() const { return val2; }

推荐阅读