Tôi đang cố tạo lớp học với các phép tính lười. Vì vậy, tôi cần cấu trúc để giữ các biến được tính trước đó và tôi muốn đặt lớp đó vào không gian tên chưa đặt tên (không muốn gây ô nhiễm phạm vi toàn cục). Đây là mã tối thiểu mà giải thích những gì tôi muốn: calculator.h
:Cách chuyển tiếp lớp khai báo trong không gian tên chưa đặt tên
#ifndef CALCULATOR_H
#define CALCULATOR_H
class PrevCalc;
class Calculator
{
public:
Calculator();
PrevCalc* prevCalc;
};
#endif // CALCULATOR_H
calculator.cpp
:
#include "calculator.h"
namespace{
struct PrevCalc{
double prevA = -1;
double prevB = -1;
double prevC = -1;
};
}
Calculator::Calculator()
{
prevCalc = new PrevCalc();
}
Tất nhiên nó mang lại cho một lỗi expected type-specifier before 'PrevCalc'
và nếu tôi xác định PrevCalc
không gian tên tất cả mọi thứ hoạt động tốt. Câu hỏi của tôi là làm thế nào để khai báo lớp đó sẽ được xác định trong không gian tên vô danh trong .cpp
tập tin
Một namespace vô danh trong một tiêu đề chắc chắn là một thiết kế sai. –
Không gian tên ẩn danh ** được dự định ** để giới hạn phạm vi cho phạm vi tệp. Một không gian tên được đặt tên có thể phù hợp với nhu cầu của bạn tốt hơn. – Downvoter
Tại sao không thực hiện 'PrevCalc' một cấu trúc lồng nhau của' Máy tính'? Bạn sẽ không cần phân bổ động nó sau đó. –