Không thể dereference một con trỏ đến một đối tượng được lưu trữ trong một mảng bằng cách sử dụng toán tử indirection (dereference) hoặc tôi đang làm điều gì sai?Tại sao tôi không thể dereference một con trỏ đến một đối tượng đó là một phần tử mảng bằng cách sử dụng toán tử indirection?
#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;
}
Đây là lỗi tôi nhận được:
$ 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();
là công việc này? * v [1] .test() – cutzero
thử: '(* v [1]). test()' - phần tử mảng của nó mà bạn muốn dereference, không phải là giá trị trả về của 'test()'. – Galik