Created
December 7, 2019 09:26
-
-
Save obiltschnig/3297a429a56b3e43b8a16312f3ddb56b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <memory> | |
#include <iostream> | |
struct Acceleration | |
{ | |
float x; | |
float y; | |
float z; | |
}; | |
class Accelerometer | |
{ | |
public: | |
virtual Acceleration acceleration() = 0; | |
virtual ~Accelerometer() = default; | |
}; | |
class MPU6050Accelerometer: public Accelerometer | |
{ | |
public: | |
MPU6050Accelerometer(int fd): _fd(fd) | |
{ | |
} | |
~MPU6050Accelerometer() | |
{ | |
std::cout << "~MPU6050Accelerometer" << std::endl; | |
} | |
Acceleration acceleration(); | |
private: | |
int _fd; | |
}; | |
Acceleration MPU6050Accelerometer::acceleration() | |
{ | |
Acceleration acc; | |
//... | |
// acc.x = ...; | |
// acc.y = ...; | |
// acc.z = ...; | |
std::cout << "MPU6050Accelerometer::accelerate()" << std::endl; | |
return acc; | |
} | |
class SomeOtherAccelerometer: public Accelerometer | |
{ | |
public: | |
SomeOtherAccelerometer() | |
{ | |
} | |
~SomeOtherAccelerometer() | |
{ | |
std::cout << "~SomeOtherAccelerometer" << std::endl; | |
} | |
Acceleration acceleration(); | |
}; | |
Acceleration SomeOtherAccelerometer::acceleration() | |
{ | |
Acceleration acc; | |
//... | |
// acc.x = ...; | |
// acc.y = ...; | |
// acc.z = ...; | |
std::cout << "SomeOtherAccelerometer::accelerate()" << std::endl; | |
return acc; | |
} | |
int main(int argc, char* argv[]) | |
{ | |
std::shared_ptr<Accelerometer> pAcc(std::make_shared<MPU6050Accelerometer>(23)); | |
Acceleration acc = pAcc->acceleration(); | |
std::shared_ptr<Accelerometer> pAcc2 = pAcc; | |
return 0; | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment