間接(逆参照)演算子を使用して配列に格納されているオブジェクトへの参照を参照解除することはできませんか、間違っていますか?ここで間接演算子を使用して配列要素のオブジェクトへのポインタを逆参照できないのはなぜですか?
#include <iostream>
class A {
public:
virtual void test() {
std::cout << "A\n";
}
};
class B : public A {
public:
void test() {
std::cout << "B\n";
}
};
int main() {
A* v[2];
v[0] = new A();
v[1] = new B();
v[0]->test();
*(v[1]).test(); // Error! If the arrow operator is used instead
// though, the code compiles without a problem.
return 0;
}
は私が取得エラーです:
$ g++ -std=c++11 test.cpp && ./a.out
test.cpp: In function ‘int main()’:
test.cpp:26:13: error: request for member ‘test’ in ‘v[1]’, which is of
pointer type ‘A*’ (maybe you meant to use ‘->’ ?)
*(v[1]).test();
へ
変更それがこの作品はありますか? test() ' - ' test() 'の戻り値ではなく、参照を外す配列要素です。* v [1] .test() – cutzero
try:'(* v [1])。 – Galik