2017-02-18 5 views
0

Это общий вопрос о C++. Я пытаюсь сделать класс камеры, который будет содержать частную структуру элементов, содержащую различные свойства камеры.Написание структуры внутри класса

Class Camere 
{ 
public: 


int read_input_image(properties &c, const char *file_name);  

private: 
struct properties 
{ 
double* input_image; 
double* output_image; 
---- 
---- 
} 
} 

c; }

.cpp файл

int Camera :: read_input_image(properties &c, const char *file_name) { 
     if(c.input_image == 0) { 
     c.input_image = new uint8_image_t; 
     c.input_image->data = 0; 
    } 

Теперь 1. Мой вопрос заключается в том, как я мог бы получить доступ к частным членам структуры, , если я хочу, чтобы написать функцию, получая доступ к членам структуры. 2. Еще один вопрос: как удалить указатели, связанные со структурой внутри класса, мне нужно удалить указатель input_image.

+0

изменить слово класса на маленькие буквы и исправить камеру или камеру –

ответ

0

, как я мог бы получить доступ к частным членам структуры

структура не имеет частных пользователей, все его члена являются общедоступными, поскольку доступ по умолчанию для структур является общедоступным.

мне нужно удалить input_image указатель

Да, вы должны delete input_image, поскольку она указывает на new эд памяти.

+0

int read_input_image (свойства & c, const char * имя_файла); показывает ошибку, как бы я использовал эту структуру для вызова функции в закрытом режиме. – Angelina

0

Это не члены вашей структуры, которые являются частными, а определение самой структуры.

Поскольку члены не являются частными (члены структур являются публичными, если не указано иное), вы можете получить к ним доступ в любой точке, где известно struct properties, в данном случае только внутри класса Camere. Вне класса Camere, struct properties неизвестен и недоступен. Обратите внимание, что это происходит не потому, что любые «частные» члены (которые не являются частными), но из-за того, что определение struct properties не отображается.