gpt4 book ai didi

c++ - const T* 与 typedef

转载 作者:太空狗 更新时间:2023-10-29 20:03:30 25 4
gpt4 key购买 nike

以下代码无法在 visual studio 2012 中为我编译:

//1. Define struct
struct TestList
{
...
};

//2 define a pointer to 1. struct as typedef
typedef TestList * TestListPtr;

//3. use it latter on in the code as follows:
const TestList* p1 = 0;
const TestListPtr p2 = p1;

然后,得到这个编译错误:

error C2440: 'initializing' : cannot convert from 'const TestList *' to 'const TestListPtr'

为什么上面的语法会被认为是非法语法?

还没有在其他编译器上尝试过。

最佳答案

编译器是对的,所有符合规范的编译器都必须拒绝这一点。原因是声明分组不同:

const TestList * p1p1 声明为指向常量 TestList 的指针。

const TestListPtr p2p2 声明为常量 TestListPtrTestListPtr 是指向(非常量)TestList 的指针。不使用 typedef 拼写出 p2 是这样的:

TestList * const p2 = p1;

关于c++ - const T* 与 typedef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28591766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com