如何访问C++中类中的私有结构?
大家好!我只想问一下,如何能够访问类内部的私有结构 我的代码如下所示:如何访问C++中类中的私有结构?,c++,structure,C++,Structure,大家好!我只想问一下,如何能够访问类内部的私有结构 我的代码如下所示: class VideoClass{ private: struct vidstruct { int Video_ID; string movietitle; string genre; string prod; int numberOfCopies;
class VideoClass{
private:
struct vidstruct {
int Video_ID;
string movietitle;
string genre;
string prod;
int numberOfCopies;
string MovImg_name;
};
public:
VideoClass();
// ~VideoClass();
void insertVideo(vidstruct info);
void rentVideo(int rv); //
void returnVideo(); // ---
void showDetails(int sd);
void validateVideo(); //
void displayVideo();
};
我想要的是访问程序任何部分的结构的vidstruct名称。提前感谢您的友好回答:您的成员vidstruct声明为private,这意味着它在类外无法访问。如果要在类之外使用它,您可以在类之外简单地声明它 下面是一个打印“电影测试”的片段示例:
#include <iostream>
using namespace std;
typedef struct {
int Video_ID;
string movietitle;
string genre;
string prod;
int numberOfCopies;
string MovImg_name;
} vidstruct;
class VideoClass{
public:
VideoClass() {
};
// ~VideoClass();
void insertVideo(vidstruct info) {
cout << info.movietitle;
};
void rentVideo(int rv); //
void returnVideo(); // ---
void showDetails(int sd);
void validateVideo(); //
void displayVideo();
};
int main()
{
vidstruct x;
x.movietitle = "movie test";
VideoClass videoTest;
videoTest.insertVideo(x);
return 0;
}
这直接违背了隐私:,不是吗?那么为什么不公开呢?我不确定是否应该公开,因为我希望结构中的属性至少通过将其私有化而安全。你说的安全是什么意思?你认为它们是实现细节吗?在这种情况下,private是正确的,但是您不应该使用程序其余部分的结构。能否请您详细说明如何使用vidstruct?例如,您的公共insertVideo现在无法使用。没有简单的方法可以让私人成员访问,因为通过编写private,您表示他们不应该访问。所以,花点时间来弄清楚vidstruct的用途是什么。也许insertVideo可以直接获取属性?也许你需要两个结构?也许让vidstruct成为API的一部分是一条出路。这能回答你的问题吗?