在下面的代碼中,我得到了第33行的錯誤。爲什麼?什麼是正確的語法? 當然,我犯了一個愚蠢的錯誤......不幸的是,我試圖更好地理解載體。從矢量陣列調用函數
#include <iostream>
#include <vector>
class firstClass
{
public:
firstClass(int x, int y):sum(x+y)
{
}
void getSum()
{
std::cout << sum << std::endl;
}
private:
int sum;
};
class secondClass
{
public:
secondClass(int dim)
{
obj = new std::vector<firstClass>(dim,firstClass{3,5});
}
private:
std::vector<firstClass>*obj;
};
int main()
{
secondClass*obj2;
obj2 = new secondClass(4);
obj2->(*obj)[0].getSum(); //HERE!
return 0;
}
錯誤:
error: expected unqualified-id before '(' token
error: 'obj' was not declared in this scope
即使您正確地命名'obj',它也是私有的,並且在'main'中不可訪問。你爲什麼要'新'''矢量'?只需使用非指針'vector'成員即可。 – aschepler
我認爲你想要做的語法是'(* obj2-> obj)[0] .getSum();',但是'obj'是'private',所以你會得到另一個錯誤。 – nwp