Pea*_*Gen 3 c++ friend visual-studio-2010
我是C++的新手.请查看以下代码
Position.h
#pragma once
class Position
{
public:
Position(int x, int y, int z);
Position();
~Position();
void display();
private:
int x;
int y;
int z;
};
Run Code Online (Sandbox Code Playgroud)
Position.cpp
#include "Position.h"
#include <iostream>
using namespace std;
Position::Position(int x, int y, int z)
{
this->x = x;
this->y = y;
this->z = z;
}
Position::Position(){}
Position::~Position(void)
{
}
Run Code Online (Sandbox Code Playgroud)
GameComponent.h
#pragma once
#include<time.h>
class GameComponent
{
public:
GameComponent(int);
GameComponent();
~GameComponent(void);
virtual void update(const tm*);
friend class Position;
private:
int id;
};
Run Code Online (Sandbox Code Playgroud)
GameComponent.cpp
#include "GameComponent.h"
#include <iostream>
#include <time.h>
#include "DrawableGameComponent.h"
using namespace std;
GameComponent::GameComponent(int v):id(v)
{
}
GameComponent::GameComponent(){}
GameComponent::~GameComponent(void)
{
}
void GameComponent::update(const tm* time)
{
cout << "ID : " << id << endl;
cout << "Update: " << time->tm_hour << ":" << time->tm_min << ":" << time->tm_sec << endl;
//Position::displayPositions();
}
void Position::display()
{
cout << "X" << x << "Y" << y << "Z" << z << endl;
}
Run Code Online (Sandbox Code Playgroud)
我需要在GameComponent的方法中访问display()属于类Position的朋友类GameComponent的update(const tm* time)方法.实际上我想要做的是访问类的私有数据成员Position.我怎样才能做到这一点?请帮忙
C++友谊以另一种方式工作:如果GameComponent声明Position为朋友,则意味着可以Position访问所有私有方法GameCompenent.你需要的恰恰相反:Position从中调用私有方法GameComponent
因此,如果Position::displayPositions()您要从GameComponent访问Position类的私有方法,那么您可以声明GameComponent为以下的朋友Position:
class Position
{
friend class GameComponent;
...
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4373 次 |
| 最近记录: |