не может получить доступ к закрытому члену, объявленному в классе ‘Windows :: Devices :: Sensors :: Accelerometer’

У меня есть следующий код:

AccelerometerDelegate.h

#pragma once
#include "pch.h"
using Windows::Devices::Sensors::Accelerometer;
using Windows::Devices::Sensors::AccelerometerReading;

ref class AccelerometerDelegate sealed
{
public:
double GetX();
double GetY();
double GetZ();
AccelerometerDelegate();
void GetCurrentReading();
private:
Accelerometer ^ accelerometer;
AccelerometerReading ^ accelerometerReading;
};

AccelerometerDelegate.cpp

#include "pch.h"#include "AccelerometerDelegate.h"
AccelerometerDelegate::AccelerometerDelegate()
{
accelerometer = ref new Accelerometer();
}

void AccelerometerDelegate::GetCurrentReading()
{
accelerometerReading = accelerometer->GetCurrentReading();
}

double AccelerometerDelegate::GetX()
{
return accelerometerReading->AccelerationX;
}

double AccelerometerDelegate::GetY()
{
return accelerometerReading->AccelerationY;
}

double AccelerometerDelegate::GetZ()
{
return accelerometerReading->AccelerationZ;
}

Объявление конструкции вызывает ошибку компиляции:

Error   1   error C2248: 'Windows::Devices::Sensors::Accelerometer::Accelerometer' : cannot access private member declared in class 'Windows::Devices::Sensors::Accelerometer'

Я называю это в своем классе игры:

Game.h

#pragma once

#include "pch.h"#include "CubeRenderer.h"#include "AccelerometerDelegate.h"
ref class Game sealed : public Windows::ApplicationModel::Core::IFrameworkView
{
public:
Game();
...
private:
AccelerometerDelegate ^ accelerometer;
...
};

Game.cpp

void Game::Initialize(CoreApplicationView^ applicationView)
{
...
accelerometer = ref new AccelerometerDelegate();
}

Вы знаете, почему это может быть?

  • Акселерометр встроен в пространство имен Windows Phone: Windows :: Устройства :: Датчики
  • Его декларация выглядит следующим образом:

    public : ref class Accelerometer sealed
    Member of Windows::Devices::Sensors
    
    Summary:
    Represents an accelerometer sensor.
    
    Attributes:
    [Windows::Foundation::Metadata::DualApiPartitionAttribute(version = 100794368),
    Windows::Foundation::Metadata::VersionAttribute]
    

0

Решение

Кажется, что это одиночка, которую вы должны получить с помощью Accelerometer::GetDefault()

Увидеть документация.

0

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

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