Есть рабочий код на C#:
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
public interface IAdapter
{
string Name { get; }
int Age { get; }
int NumberOfFriends { get; }
}
class VkAdapter : IAdapter
{
private readonly IVk _vk;
public VkAdapter(IVk vk)
{
_vk = vk;
}
public string Name
{
get { return _vk.VkName; }
}
public int Age
{
get { return _vk.VkAge; }
}
public int NumberOfFriends
{
get { return _vk.VkNumberOfFriends; }
}
}
public interface IVk
{
string VkName { get; }
int VkAge { get; }
int VkNumberOfFriends { get; }
}
public class Vk : IVk
{
private readonly string _vkName;
private readonly int _vkAge;
private readonly int _vkNumberOfFriends;
public Vk(string vkName, int vkAge, int vkNumberOfFriends)
{
_vkName = vkName;
_vkAge = vkAge;
_vkNumberOfFriends = vkNumberOfFriends;
}
public string VkName
{
get { return _vkName; }
}
public int VkAge
{
get { return _vkAge; }
}
public int VkNumberOfFriends
{
get { return _vkNumberOfFriends; }
}
}
class Program
{
static void Main()
{
var vkUser = new Vk("Василий Пупкин", 22, 987);
UserProfile.PrintUserInfo(new VkAdapter(vkUser));
Console.Read();
}
}
public static class UserProfile
{
public static void PrintUserInfo(IAdapter user)
{
Console.WriteLine("Имя пользователя: \t\t {0}", user.Name);
Console.WriteLine("Возраст: \t\t\t {0}", user.Age);
Console.WriteLine("Количество друзей: \t\t {0}", user.NumberOfFriends);
Console.WriteLine("--- --- --- --- --- ---");
}
}
Надо переделать на C++.
Мои попытки успеха не достигли:
Код:
#include <iostream>
#include <string>
using namespace std;
class IAdapter
{
public:
virtual std::wstring getName() const = 0;
virtual int getAge() const = 0;
virtual int getNumberOfFriends() const = 0;
};
class IVk
{
public:
virtual string getVkName() const = 0;
virtual int getVkAge() const = 0;
virtual int getVkNumberOfFriends() const = 0;
};
class VkAdapter : public IAdapter
{
private:
IVk const _vk;
public:
VkAdapter(IVk *vk);
string getName() const;
int getAge() const;
int getNumberOfFriends() const;
};
VkAdapter::VkAdapter(IVk *vk) : _vk(vk)
{
}
string VkAdapter::getName() const
{
return _vk->VkName;
}
int VkAdapter::getAge() const
{
return _vk->VkAge;
}
int VkAdapter::getNumberOfFriends() const
{
return _vk->VkNumberOfFriends;
}
class Vk : public IVk
{
private:
const std::wstring _vkName;
const int _vkAge;
const int _vkNumberOfFriends;
public:
Vk(const std::wstring &vkName, int vkAge, int vkNumberOfFriends);
std::wstring getVkName() const;
int getVkAge() const;
int getVkNumberOfFriends() const;
};
Vk::Vk(const string &vkName, int vkAge, int vkNumberOfFriends) : _vkName(vkName), _vkAge(vkAge), _vkNumberOfFriends(vkNumberOfFriends)
{
}
std::wstring Vk::getVkName() const
{
return _vkName;
}
int Vk::getVkAge() const
{
return _vkAge;
}
int Vk::getVkNumberOfFriends() const
{
return _vkNumberOfFriends;
}
class UserProfile
{
public:
static void PrintUserInfo(IAdapter *user);
};
void UserProfile::PrintUserInfo(IAdapter *user)
{
std::wcout << std::wstring(L"Имя пользователя: \t\t ") << user->Name << std::endl;
std::wcout << std::wstring(L"Возраст: \t\t\t ") << user->Age << std::endl;
std::wcout << std::wstring(L"Количество друзей: \t\t ") << user->NumberOfFriends << std::endl;
std::wcout << std::wstring(L"--- --- --- --- --- ---") << std::endl;
}
void main()
{
vkUser = new Vk(L"Василий Пупкин", 22, 987);
VkAdapter tempVar(vkUser);
UserProfile::PrintUserInfo(&tempVar);
}
Прошу помочь