Can I use "using" instead of "typedef" for a pointer to class member variable?

Issue

#include <iostream>
using namespace std;

struct Pos {
    int x;
    float y;
};

typedef int Pos::* pointer_to_pos_x;
//using pointer_to_pos_x = ???;

int main()
{
    Pos pos;
    pointer_to_pos_x a = &Pos::x;
    pos.*a = 100;
    cout << pos.x << endl;
}

Can I use using instead of typedef in this situation?

I have searched some information on the web: Some people say using can replace typedef, but how can I replace this? (Any documentation or blog would also be helpful.)

Solution

Just this:

using pointer_to_pos_x = int Pos::*;

Virtually all cases of a typedef XXX aaa; can be converted readily to using aaa = XXX;. You may also find this Q/A useful: What is the difference between 'typedef' and 'using' in C++11?

Answered By – Adrian Mole

Answer Checked By – Robin (AngularFixing Admin)

Leave a Reply

Your email address will not be published.