gro*_*ter 3 c++ boolean member
我使用简单的bool指针类成员.分配错误的分配.true表现不同 - 请参阅代码中的注释.我在下面测试另一个.
我用编译器调用 g++ -o basic basic.cpp
class Test
{
public:
int a;
bool* abool;
};
int main() {
Test t;
//t.abool = false; // WORKS
//t.abool = true; // ERROR: cannot convert 'bool' to 'bool*' in assignment - expected IMO;
// this should work for both values IMO
//*(t.abool) = true; // Segmentation fault
//*(t.abool) = false; // Segmentation fault
cout << t.abool << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Ash*_*sha 10
这是因为转换从存在false到0.因此它成为t.abool = 0;该初始化abool用NULL.但是,true转换为1并且由于无法使用绝对整数初始化指针,因此会出现编译器错误.在第二种情况下(评论这应该适用于IMO),当你试图取消引用一个调用未定义行为的单一化指针时,你会得到一个seg错误.
你bool*还没有被初始化指向任何东西.
您可以为其指定一个空指针值(false将转换为),或指向bool对象的有效指针:
bool test;
t.abool = 0; // or NULL
t.abool = &test;
Run Code Online (Sandbox Code Playgroud)
一旦它指向一个实际的bool对象,你可以bool通过指针为该对象赋值:
*t.abool = true;
*t.abool = false;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9804 次 |
| 最近记录: |