C++ 无法访问类';Windows::Devices::Sensors::加速计';

C++ 无法访问类';Windows::Devices::Sensors::加速计';,c++,windows-phone-8,accelerometer,C++,Windows Phone 8,Accelerometer,我有以下代码: 加速计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(); do

我有以下代码:

加速计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;
};
#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;
    ...
};
加速计数据传输.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;
}
void Game::Initialize(CoreApplicationView^ applicationView)
{
    ...             
    accelerometer = ref new AccelerometerDelegate();
}
构造声明引发编译错误:

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"

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;
};
#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

#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;
}
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]
    

似乎是一个单件,您必须使用
Accelerator::GetDefault()检索它。