无法访问在类"Windows::D evices::传感器::加速度计"中声明的私有成员

cannot access private member declared in class 'Windows::Devices::Sensors::Accelerometer'

本文关键字:声明 加速度计 成员 传感器 访问 Windows evices      更新时间:2023-10-16

我有以下代码:

加速度计Delegate.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;
};

加速度计Delegate.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::Devices::Sensors
  • 其声明如下:

    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() 检索的单例

请参阅文档。