У меня есть следующий код:
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();
}
Вы знаете, почему это может быть?
Его декларация выглядит следующим образом:
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]
Кажется, что это одиночка, которую вы должны получить с помощью Accelerometer::GetDefault()
Увидеть документация.
Других решений пока нет …