【问题标题】:C++ class beginner [duplicate]C ++类初学者[重复]
【发布时间】:2013-07-04 19:04:18
【问题描述】:

你们如何从这段代码中找到 s.x 的值 我是 C++ 的初学者,不知道如何解决它 请帮忙谢谢

// StarterLab.c : C Program to convert to C++
//

//#include "stdafx.h"       // required for Visual Studio
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
//#include "MemTracker.h"

#pragma warning (disable:4996)

using namespace std;

struct variable
{

friend void showCalculation(variable a);

private:
    int x;
    int y;
    int sum;

public:
    void Calculate(int x,int y);

};


void showCalculation(variable a)
{
    printf("%d",a.sum);
};

void variable:: Calculate (int x,int y)
{
    sum = x + y;
};

int main ()
{

    variable s;
    s.Calculate(7, 6);
    showCalculation(s);
    printf("%d",s.x);
}

你们如何从这段代码中找到 s.x 的值 我是 C++ 的初学者,不知道如何解决它 请帮忙谢谢

【问题讨论】:

  • 决不包括 Visual Studio 所需的 stdafx.h。只有当你让你的项目使用预编译的头文件时。

标签: c++


【解决方案1】:

变量xprivate,所以不能直接访问。您可以添加一个成员函数来获取它:

int variable::GetX() {
  return x;
}

printf("%d", s.GetX());

【讨论】:

    【解决方案2】:

    您无法访问s.x,因为x 是私人成员。你有两个选择。

    创建getter

    int variable::X() { return x; }
    

    或设为public:

    public:
        int x;
        int y;
        int sum;
    

    请注意,使用 getter/setter 是正确的做法。

    【讨论】:

    • 一旦 getter 和 setter 成为解决方案,您就不得不怀疑他们是否真的应该拥有对该成员的完全访问权限。
    猜你喜欢
    • 1970-01-01
    • 2015-02-11
    • 2019-05-30
    • 2022-10-15
    • 2013-07-22
    • 2021-01-06
    • 1970-01-01
    • 2018-12-22
    • 2022-01-08
    相关资源
    最近更新 更多