C struct - функция-член, обращающаяся к переменной родительской структуры - PullRequest
1 голос
/ 06 января 2020

В C ++ вы можете сделать:

class Person{
public:
    int ID;
    char* name;
    void Display(){
        cout << "Person " << name << " ID: " << ID << endl;
    }
}

Если функция-член может получить доступ к другим переменным в классе, есть ли возможность сделать то же самое со структурой в C

Ответы [ 2 ]

1 голос
/ 06 января 2020

Ваш код C ++:

class Person {
public:
    int ID;
    char* name;
    void Display() {
        cout << "Person " << name << " ID: " << ID << endl;
    }
}
...
Person person;
...
person.Display();
...

В C нет функций-членов, но аналогичный код в C может выглядеть следующим образом:

struct Person {
  int ID;
  char* name;
}

void Display(struct Person *this) {
   printf("Person %s ID: %d\n", this->name, this->ID);
}

...
struct Person person;
...
Display(&Person);
...
0 голосов
/ 06 января 2020

c не является объектно-ориентированным языком, но вы можете сделать что-то вроде этого.

#include<stdio.h>  
#include <string.h>

typedef void (*DoRunTimeChecks)();

struct student  
{  
    char name[20];  
    DoRunTimeChecks func;
};  

void Print(char name[])
{
    printf("Printing student information\n");  
    printf("Name: %s",name);  
}

void main ()  
{  
    struct student s = {"shriram", Print}; 
    s.func = Print;
    s.func(s.name);
}  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...