Форум программистов, компьютерный форум CyberForum.ru

Допустима ли запись вида void method(T *& member)? (ссылка на указатель) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нужно ли сразу знать точный размер динамического массива, объявляемого в классе? http://www.cyberforum.ru/cpp-beginners/thread1803993.html
Можно ли сделать так? private: int i; char *p = new char; Или же ему надо сразу знать точный размер?
C++ Нарисовать зеркальный треугольник из символов Рисовать пирамиду до тех пор пока первый символ не станет равен тому что введет пользователь. http://www.cyberforum.ru/cpp-beginners/thread1803857.html
Исправить ошибку "non-standard syntax; use '&' to create a pointer to member" C++
Доброго времени суток,такая проблема,код вроде написан нормально,но выдает ошибку : "non-standard syntax; use '&' to create a pointer to member" Скажите пожалуйста в чем проблема и ошибка , спасибо. КОД: #include <iostream> #include <windows.h> using namespace std;
C++ Вызвано исключение: нарушение доступа для записи
Не пойму в чем ошибка.MVS 2015. #include "stdafx.h" #include <iostream> #include <stdio.h> using namespace std; class Massive { private:
C++ Посчитать сумму ряда http://www.cyberforum.ru/cpp-beginners/thread1803781.html
Помогите найти сумму ряда с заданной точностью \varepsilon = 0.0001 {\varepsilon}^{x} = \sum_{k=0}^{\infty }\frac{{x}^{k}}{k!} , x\in (-\infty ,+\infty ) Сложность у меня возникает при определении терма ряда. Заранее спасибо
C++ Присваивание constexpr к non-constexpr constexpr float pi = 3.14159265; void some_fun() { float angle = 45.0f*(pi/180.0f); std::cout << angle; } В консоли пишет angle = 0. Почему? подробнее

Показать сообщение отдельно
dailydose
overmind
330 / 110 / 29
Регистрация: 21.07.2016
Сообщений: 544

Допустима ли запись вида void method(T *& member)? (ссылка на указатель) - C++

07.09.2016, 13:14. Просмотров 224. Ответов 9
Метки (Все метки)

Есть структура
C++
1
2
3
4
5
6
7
8
9
struct FamilyMember
{
    int age;
    std::string name;
    FamilyMember(int _age, std::string _name):
        age(_age),
        name(_name)
    {}
} *mother, *father, *me; // and other (brother, sister, etc..)
и есть указатели на эту структуры, которые могут заполняться а могут и не заполняться
C++
1
2
3
4
void addMember(FamilyMember *&member, int _age, std::string _name)
{
    member = new FamilyMember(_age, _name);
}
C++
1
2
3
4
5
    addMember(me, 21, "Alex");
    addMember(mother, 47, "Marina");
 
    // I do not have a father
    //addMember(father, 49, "Sergey");
Вопрос: Допустима ли такая сложная(?) запись void addMember(FamilyMember *&member, int _age, std::string _name) ?
полный код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <vector>
#include <string>
 
struct FamilyMember
{
    int age;
    std::string name;
    FamilyMember(int _age, std::string _name):
        age(_age),
        name(_name)
    {}
} *mother, *father, *me; // and other (brother, sister, etc..)
 
void addMember(FamilyMember *&member, int _age, std::string _name)
{
    member = new FamilyMember(_age, _name);
}
 
int main()
{
    addMember(me, 21, "alex");
    addMember(mother, 47, "marina");
 
    // I do not have a father
    //addMember(father, 49, "Sergey");
 
    return 0;
}

Код работать то работает, при чём корректно, просто меня смущает запись вида FamilyMember *&member.

Рассматривал такой вариант
C++
1
2
3
4
void addMember(FamilyMember **member, int _age, std::string _name)
{
    *member = new FamilyMember(_age, _name);
}
C++
1
2
3
4
5
    addMember(&me, 21, "alex");
    addMember(&mother, 47, "marina");
 
    // I do not have a father
    //addMember(&father, 49, "Sergey");
И вот как-то не камельфо что-ли расставлять эти амперсанды/звёздочки
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru