Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何访问C++中类中的私有结构?_C++_Structure - Fatal编程技术网

如何访问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的一部分是一条出路。这能回答你的问题吗?