我被赋予了此代码的约束,即无论如何我都不能编辑公众,并且不允许调用除指定库之外的任何其他库。
Class example
{
private:
vector<int> vector_1;
void function_1(string name)
{
"code for function one goes here"
}
public:
void function_1(string name);
};
是否可以将function_1映射到私有方法?这样一来,主要来说:方法调用的行为就像是在公共环境中一样,但在私有环境中(考虑到约束)
-edit:我已经阅读了规则并进行了一些研究,但是找不到真正的答案。这是代码示例:
#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class MapFunction
{
private:
string responce;
string input;
vector<int> templist;
public:
void AskForInput();
void Output(string input)
};
int main(void) {
MapFunction a;
return 0;
}
我的解决方案的限制是不允许我更改类的公共部分或将代码放入main中。通常,我会通过创建这样的方法
在类内部创建方法#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class MapFunction
{
private:
string responce;
string input;
vector<int> templist;
public:
void AskForInput(void);
void Output(void);
};
void MapFunction::AskForInput() {
cin >> input;
};
void MapFunction::Output() {
cout << input;
};
int main(void) {
MapFunction a;
a.AskForInput();
a.Output();
return 0;
}
但是我想知道是否有可能将这些方法放置在私有方法中,并允许main访问它们而无需更改在公共方法中的调用方式
答案 0 :(得分:1)
成员函数始终可以访问所有成员(私有成员和公共成员),无论它是私有成员还是公共成员。因此,函数不能表现为“私有”或“公开”,而只是表现为“函数”。
仅私有/公共与从类之外访问该功能有关-一个可以(公共)或不能(私有)(此外,还受到保护,就像私有,除了用于继承类)。
最后:还有friend
关键字:通过声明一个函数(或一个类)朋友,您可以使它访问该类的私有成员。该访问权限包括 all 个成员,但是,您不能仅授予特定成员访问权限(至少不是没有代理类之类的技巧)。示例:
void outerFriend();
void outer();
class C
{
public:
void publicInner();
private:
friend void outerFriend();
void privateInner();
};
void outer()
{
C c;
c.publicInner(); // legal
c.privateInner(); // not accessible!
}
void outerFriend()
{
C c;
c.publicInner(); // legal
c.privateInner(); // legal(!)
}