在c ++类中访问getter setter中的struct变量

Asa*_*han 2 c++ getter setter struct

好的,我在C++中有这样的东西:

class MyClass{
private:
  int someVariable;
  int someOtherVariable;

  struct structName{
    int someStructVariable;
    int someOtherStructVariable;
  };//end of struct

public:
  //getters & setters for the defined variables.

  int getSomeStructVariable()
  {
    // this does not work I get this error: "error: expected primary-expression
    // before '.' token"
    return structName.someStructVariable;
  } 
};//end of class
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我该如何写我的getter或setter?

Car*_*rum 9

structName是类型名称的一部分,而不是变量名称.你需要给它一个名字,比如:

struct structName {
  int someStructVariable;
  int someOtherStructVariable;
} myStructure;
Run Code Online (Sandbox Code Playgroud)

然后在您的访问者中使用:

return myStructure.someStructVariable;
Run Code Online (Sandbox Code Playgroud)

这应该会得到你想要的结果.结构变量的其他替代方法是将结构定义与变量声明分开:

struct structName {
  int someStructVariable;
  int someOtherStructVariable;
};

struct structName myStructure;
Run Code Online (Sandbox Code Playgroud)

或者加入typedef:

typedef struct structName {
  int someStructVariable;
  int someOtherStructVariable;
} structTypedefName;

structTypedefName myStructure;
Run Code Online (Sandbox Code Playgroud)

  • 不需要typedef来删除struct class-key,`struct Name {}; 名称变量;`工作正常. (2认同)