Как я объявляю методы публично и пишу код приватно

Мне дали этот код с ограничениями, которые я не могу редактировать в любом случае, и мне не разрешается вызывать любые другие библиотеки, кроме указанных.

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 с методом private? так что в основном: вызов метода будет действовать так, как если бы он был публичным, но закрытым (с учетом ограничений)

-редактировать: я прочитал правила и немного изучить, но не смог найти правильный ответ на то, что я искал. Вот пример кода:

#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;
}

однако мне интересно, можно ли было разместить методы внутри private и позволить main получить к ним доступ без изменения способа их вызова в public

-4

Решение

Функция-член всегда имеет доступ ко всем членам (частным и общедоступным), независимо от того, является ли он частным или публичным. Таким образом, функция не может вести себя как «конфиденциально» или «публично», она просто ведет себя как «функция».

Только частное / общедоступное имеет отношение к доступу к функции из вне класс — либо можно (общедоступный), либо нельзя (частный) (и, кроме того, он еще защищен, что похоже на частный, за исключением наследования классов).

Наконец-то: friend Ключевое слово. Объявляя друга (или класса) в функции, вы предоставляете ему доступ к закрытым членам класса. Этот доступ включает все члены, однако, вы не можете предоставить доступ только определенным членам (по крайней мере, без таких хитростей, как прокси-классы). Пример:

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(!)
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]