在下面的代码中,我在第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
答案 0 :(得分:1)
访问数据成员的正确语法应为:
<div class="container-fluid">
<div class="row">
<div class="col-12">
<img class="img-fluid" src="images/section-image-02.jpg" alt="">
</div>
</div>
</div>
请注意,(*(obj2->obj))[0].getSum();
是secondClass::obj
数据成员,因此您无法在private
中访问它。
对于您展示的代码示例,您根本不需要使用原始指针和main()
。