#include <vector>
struct A {int a;};
struct B : public A {char b;};
int main()
{
B b;
typedef std::pair<A*, A*> MyPair;
std::vector<MyPair> v;
v.push_back(std::make_pair(&b, &b)); //compiler error should be here(pair<B*,B*>)
return 0;
}
Tôi không hiểu tại sao điều này biên dịch (có thể ai đó vui lòng có thể cung cấp giải thích chi tiết? Có điều gì đó liên quan đến tên nhìn lên?C++ mẫu đúc với các lớp học có nguồn gốc
Btw, trên Solaris, SunStudio12 nó không biên dịch: error : formal argument x of type const std::pair<A*, A*> & in call to std::vector<std::pair<A*,A*> >::push_back(const std::pair<A*, A*> &) is being passed std::pair<B*, B*>
Mẫu cấu trúc trên không thực sự làm được nhiều? – BenG
@BennyG: Nó nghe về một số rắc rối trong khu phố và quyết định đến và có một cái nhìn. –
xin lỗi, xóa nó – yurec