Thắc mắc về việc truy xuất tới thành phần của biến trong private[class]

Em đang học lập trình hướng đối tượng.
Đây là bài tập về class chia file gồm stack.h và stack.cpp.

file stack.cpp

#include "stack.h"
#include<iostream>
using namespace std;


void stack::nhap()
{
	cout << "nhap so luong doi tuong: ";
	cin >> n;
	for (int i = 0; i < n; i++)
	{
		cout << "nhap thong tin doi tuong thu " << i + 1 << endl ;
		cout << "nhap van toc: ";
		cin >> DS.vantoc;// không the dẫn xuất thành phần van toc cua DS.


	}

}

void xuat();
void add();
void xoa();
doituong layphantudau();
int kiemtrastackrong();
int laykichthuoc();


stack::stack()
{
}


stack::~stack()
{
}

file stack.h

#pragma once
class stack
{

private:
	struct MyStruct
	{
		float vantoc;
		int sobanhxe;
		float diem;
	};
	typedef MyStruct doituong;
	int n;
	doituong *DS = new doituong[n];

public:
	void nhap();
	void xuat();
	void add();
	void xoa();
	doituong layphantudau();
	int kiemtrastackrong();
	int laykichthuoc();
	stack();
	~stack();
};

Không biết tại sao em không thể dẫn xuất vận tốc của DS được . Mặc dù em đã gọi file stack.h trong file struct.cpp rồi, có phải struct không cho truy xuất ra ngoài không ?

Em cảm ơn.

Bạn khai báo DS* là danh sách nên phải dùng DS như 1 mảng.
Số lượng đối tượng chưa có thì đừng cấp phát bộ nhớ cho DS*.

3 Likes

Yêu cầu bạn post code lên rõ ràng, chứ đừng đăng ảnh như thế kia. Và nhớ dùng markdown nha. :slight_smile:

Nếu chưa biết cách bạn có thể vô đây để xem. :slight_smile:


Do bạn vô DNH cũng khá lâu rồi mà vẫn còn đăng ảnh thế này nên mình mới phải nhắc và sẽ tạm để một :black_flag: ở đây. :slight_smile:

3 Likes

Bạn cho tôi hỏi thêm: nếu tôi để

int n;
	doituong *DS = new doituong[n];

thì nó sẽ cấp phát theo một giá trị rác vì n lúc khai báo là một giá trị rác hay sao?
Vì sao tôi không nên cấp phát bộ nhớ cho DS* khi Số lượng đối tượng chưa có ?

mình cũng từng nghe đến việc đăng bài bằng markdown trong DNH rồi. vì mình thấy để hình sẽ hiện cả lỗi và file đó là file gì luôn để hiểu cho người xem hơn thành ra mình cũng quên mất việc đăng bằng markdown với lại lâu rồi mình cũng chưa đăng code.

1 Like

Đúng rồi.

Vậy khi bạn xin tiền mà không nói số lượng thì ai biết được bạn xin bao nhiêu mà cho. :slight_smile: (Trừ trường hợp xin nhiều thành thói rồi nha. :smile:)

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?