PHPFixing
  • Privacy Policy
  • TOS
  • Ask Question
  • Contact Us
  • Home
  • PHP
  • Programming
  • SQL Injection
  • Web3.0

Thursday, October 20, 2022

[FIXED] What is handy way to modify the private class data members without writing explicit setters? Are templates useful?

 October 20, 2022     c++, c++14, datamember, private, templates     No comments   

Issue

I have a class with data members.

class Sph
{
public:
    Sph( float radius , float segments , const Shader& shader );
    Sph(const Sph& geometry);
    Sph& operator = (const Sph& geometry);
    ~Sph();
    void init();
    void CleanUp();
    void draw();
    void CreateUI(QFormLayout* layout);
    std::vector< Sum_Vertices > GetVertices();

private:
    float Radius,Segments;
    bool isInited;
    unsigned int m_VAO, m_VBO , m_IBO;
    int iNumsToDraw;
    bool isChanged;
    Shader shader;
    int indexCount;
};

in order to change the data of the class I have to write individual methods.

void SetRadius( float radius )
{
   this->Radius = radius;
}

Is it possible to write a templated function which can change different data members of the class?


Solution

Since the variables are different by names, the template may not help here.


This is a classic case, where you can use macros to your advantage & ease.

Definition:

#define GET_SET(X) X; \ 
    public: const decltype(X)& get_##X() const { return X; } \ 
            void set_##X(const decltype(X)& value) { X = value; } private:

Utility:

class Sph
{
   ...
private:
  float GET_SET(Radius);
  float GET_SET(Segments);
  ...
};

Usage:

Sph sph;
sph.set_Radius(3.3);
cout << sph.get_Radius() << "\n";

Demo.



Answered By - iammilind
Answer Checked By - Marilyn (PHPFixing Volunteer)
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
Newer Post Older Post Home

0 Comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Total Pageviews

Featured Post

Why Learn PHP Programming

Why Learn PHP Programming A widely-used open source scripting language PHP is one of the most popular programming languages in the world. It...

Subscribe To

Posts
Atom
Posts
Comments
Atom
Comments

Copyright © PHPFixing