如何获取类内的结构?

时间:2017-03-03 15:23:50

标签: c++

我说我有课

class A{
public:
    struct stuff{
        int x;  
        int y;
    }; 
    stuff get_stuff(int index){
       if(index < vec_stuff.size() && index >= 0) return vec_stuff[index];
       else return nullptr;
    }
    std::vector<stuff> vec_stuff;
};

假设我恰当地填充了vec_stuff

然后在其他一些课程中

#inclde "A.h"
class B{
public:
     B(){}

     void f(int index, int k){

        xxxx =  a.get_stuff(index) 
     }

    A a; // assume A is initialized properly
}

所以在我写xxxx的地方它应该是struct stuff但是当我这样做时我得到use of undeclared identifier那么如何让编译器知道stuff我我指的是A的内部。

1 个答案:

答案 0 :(得分:6)

您可以使用scope-operator:

指定完全限定名称
A::stuff xxx = a.get_stuff(index);

或者如果您的编译器支持C ++ 11或更高版本,您可以使用auto关键字并让编译器找出类型:

auto xxx = a.get_stuff(index);

作为旁注:

您的get_stuff方法甚至不应该编译,因为它试图返回stuff个对象,nullptr不是stuff个对象。

stuff get_stuff(int index){
   if(index < vec_stuff.size() && index >= 0) return vec_stuff[index];
   else return nullptr;
}

如果它有一个值,因此它是一个例外情况,那么你应该抛出异常。否则,您可以让它返回stuff*,然后返回&vec_stuff[index]