我将Eclipse与GDB一起使用.对于我有的任何智能指针类,例如MyString,我一直都在
警告:找不到类MyString的RTTI符号
事实上,我看不到智能指针容器所持有的值:
MyString str = "test"; //can see "test" fine when examining variable value
MyStringPtr strPtr = &str; //can not see "test" contained by the container strPtr when examining variable value.
Run Code Online (Sandbox Code Playgroud)
我认为警告是原因,指向"test"的指针变为void指针而不是MyString的类型指针.尽管如此,这有效:
int L = strPtr->length(); //correctly is 4
char c = strPtr->charAt(1); //correctly is 'e'.
Run Code Online (Sandbox Code Playgroud)
所以GDB似乎正在正确处理事情,但并不完美,所以我无法调试.
我应该提一下在Visual Studio中进行开发时没有问题.只有使用Cygwin g ++的Eclipse才会出现问题.
Cygwin g ++编译选项:-O0 -g3 -Wall -c -fmessage-length = 0
以下是相关课程的简化草图.
[码]
class MyObjectPtr
{
protected:
MyObject* pObj;
public:
MyObjectPtr(MyObject* p= 0);
MyObjectPtr(const MyObjectPtr& r);
~MyObjectPtr();
protected:
void set(MyObject* …Run Code Online (Sandbox Code Playgroud)