- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在修复庞大代码库中的错误时,我观察到一个奇怪的情况,其中引用的动态类型从原始 Đã được phái sinh
类型更改为 Căn cứ
类型!我提供了最少的代码来解释问题:
struct Base {
// some 'virtual' function
protected: // copy constructor
private: // assignment operator
};
struct Derived : Base {
... // There are few more classes between `Base` and `Derived`
... // but for simplicity, I have put direct relation
};
void foo (Base &ref)
{
SomeClass obj;
obj.pVoid = &ref; // pVoid is of void*
// ----> typeid(ref) = Derived
(*funcptr)(obj);
// ----> typeid(ref) = Base !!!
Derived *p = dynamic_cast(&ref); // this fails ... i.e. "p = 0"
}
funcptr
是一个函数指针 (void (*)(SomeClass&)
)。 funcptr
可以指向这么多的函数,并且它们有自己的调用流程,因此很难调试。
很奇怪,调用函数指针后,tham khảo
的派生类型从Đã được phái sinh
变成了Căn cứ
。为了简化我的工作,我怀疑对象从 Đã được phái sinh
切片到 Căn cứ
,所以我将 ~Base()
设为纯 ảo
并重新编译了整个源代码。但是没有编译器错误,这意味着没有声明 Căn cứ
的对象。
tham khảo
Đã được phái sinh
的动态类型更改为 Căn cứ
Và dynamic_cast
的潜在原因是什么> 后来失败了?
câu trả lời hay nhất
我不相信上面的代码是真的,因为代码示例没有编译!您不能隐式转换 Base*
từ dynamic_cast
至 Derived*
.
这就是说并假设 typeid()
的输出实际上是正确的对于引用更改的类型 ID 有一些可行的解释。所有这些都表明程序中存在某种形式的错误:
dynamics_cast (obj.pVoid)->~Base()
的道德等价物.obj.pVoid
指向的地址构造一个新对象使用展示位置 mới
,即像这样的东西:new(obj.pVoid) Base()
.Căn cứ
引用位置中的对象。就我个人而言,我会赌第二种情况是情况,即一个对象被构建到该位置。显然,如果没有看到被调用的函数,就无法分辨。
关于c++ - 在什么情况/情况下 dynamic_cast<> 会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9238711/
Tôi gặp sự cố khi sử dụng mã sau: function http_file_exists($url){ $f=fopen($url,"r"); if($f){ fclose($f);
Tôi đã triển khai lên Azure qua Git được vài tháng mà không gặp vấn đề gì lớn, nhưng bây giờ dường như tôi gặp phải một lỗi không thể khắc phục được. Tôi đã tạo một trang web Azure mới với các liên kết xem trước riêng biệt cho các dự án tôi đang phát triển. Tôi thiết lập nó trên trang web mới của tôi
Tôi đã tạo một Ứng dụng thông qua rung và hoàn thành nó và tôi muốn triển khai nó trong khi đọc tài liệu về rung. Tôi gặp lỗi này: THẤT BẠI: Xây dựng không thành công với một ngoại lệ.
Tôi đang gặp phải sự cố kỳ lạ này khi sử dụng một số mã Powershell đơn giản trong Windows 10 và tôi nghĩ có thể tôi đã làm sai điều gì đó nhưng tôi không phải là thiên tài về Powershell. Tôi có cái này: $ix = [System.Net.Dn
Tôi đang cố gắng sử dụng RapidJSON để phân tích dữ liệu nhận được từ máy chủ. Đây là chuỗi chính xác nhận được: [ { "Node": "9478149a08f9", "Address": "172.17
Tôi cố gắng biên dịch OpenCV cho ios. Tôi tiếp tục nhận được những lỗi này. Tôi đã thử nó với các phiên bản opencv khác nhau và kết quả đều giống nhau. Tôi chạy cái này: python platform/ios/build_framework.py ios_o
Tôi đang thực hiện xuất bản/đăng ký cơ bản trên một máy, ứng dụng khách của tôi là ứng dụng khách C# của StackExchange-Redis và tôi đang chạy máy chủ Redis dựa trên Windows (phiên bản máy chủ 2.8.4) trên cùng một máy.
Tôi có mã này nhưng không thể thực thi được, vui lòng giúp tôi giải quyết vấn đề này connect_error) { die ("kết nối không thành công: " . $terhubung->connect_erro
Ứng dụng web của tôi chạy trên tomcat và được biên soạn bởi maven đang đưa ra các cảnh báo và lỗi sau. Tôi có thể xem tất cả các JAR trong kho lưu trữ cục bộ của mình nhưng có ai có thể trợ giúp không. CẢNH BÁO: Không quét được JA
Tôi đang phát triển một ứng dụng Android bằng Android Studio trên Windows 8 và tôi đang sử dụng một số mã gốc. Đột nhiên tôi không thể biên dịch các tệp C của mình. Khi tôi chạy ndk-build
Đoạn mã sau tuần tự hóa và giải tuần tự hóa các thành viên của lớp và cấu trúc. Quá trình tuần tự hóa đang hoạt động tốt nhưng tôi gặp phải lỗi sau khi cố gắng giải tuần tự hóa bằng cách sử dụng oarch >> BOOST_SERIALIZATION_NVP(outObj);;
Nếu tôi chạy lệnh này "rspec ./spec/requests/api/v1/password_reset_request_spec.rb" thì tất cả các bài kiểm tra trong tệp này đều vượt qua. Tuy nhiên, khi tôi chạy "rspec"
Tôi gặp lỗi khi thử thực hiện kiểm tra để tải tệp lên bằng Protractor, mã của tôi là thế này('có thể tải tệp lên', function() {
System.loadLibrary("nativefaceswap"); Tôi gặp lỗi như vậy trong Android Studio khi chạy ứng dụng của mình. Hiển thị trong logcat: java.lang.U
Tôi hy vọng ai đó có thể giúp tôi! Mọi cuộc gọi SSL/HTTPS bằng bất kỳ phương thức hoặc dòng lệnh nào đều không hoạt động. Tôi đang sử dụng Ubuntu Server 18.04 làm hệ thống con trong Windows 10. Vấn đề của tôi chỉ bắt đầu ngày hôm qua vì
Tôi gặp sự cố khi sử dụng lệnh db.alter khi thay đổi trường ngày từ null=True và Blank=True thành bắt buộc bằng cách xóa hai giá trị này. Khi các dòng sau được nhận xét, quá trình di chuyển sẽ diễn ra mà không gặp vấn đề gì.
Tôi đang cố gắng tạo một ứng dụng lần đầu tiên bằng Heroku (sử dụng Webhook phân tích nội bộ của SendGrid" và Twilio SMS để gửi và nhận tin nhắn SMS qua email). Via Virtu
Tôi đang cập nhật dự án Swift của mình lên Swift 2.0 trên Xcode 7. xcode đã báo cáo lỗi sau khi xây dựng dự án: Command/Applications/Xcode.app/Contents/Deve
Trong mã của tôi, hàm thư viện SSL SSL_library_init() không trả về 1 như mong đợi. Làm cách nào để biết nó trả về lỗi gì? Tôi đã gọi SSL_load_er sau SSL_library_init()
Tôi đang cố chạy câu trả lời được tìm thấy ở liên kết sau: Tải không đồng bộ nội dung của Div nhưng khi thực hiện việc này, tôi gặp phải các lỗi mà tôi không hiểu rõ lắm. Mã của tôi: $(tài liệu
Tôi là một lập trình viên xuất sắc, rất giỏi!