gpt4 book ai didi

c++ - 通过同一命名空间中的另一个类型访问类型

转载 作者:行者123 更新时间:2023-12-01 18:58:15 25 4
gpt4 key购买 nike

我有两个位于同一命名空间中的结构体AB。出于架构和兼容性原因,我希望通过 B 访问 A

我尝试了以下方法,但不起作用:

#include <iostream>

struct A
{
static void print()
{
std::cout << "hello SO!" << std::endl;
}
};

struct B
{
typedef A A; // error here
};

int main()
{
B::A::print();
return 0;
}

显然同名的 typedef 不起作用。使用 g++ 我收到以下错误:

foo.cpp:13:15: error: declaration of ‘typedef struct A B::A’ [-fpermissive]
typedef A A;
^
foo.cpp:3:8: error: changes meaning of ‘A’ from ‘struct A’ [-fpermissive]
struct A

如果我给它一个其他名称(例如 typedef A A2),它会起作用,但我希望它保持相同的名称。

有趣的是,当我使用 clang 编译时它实际上可以工作,但我需要也使用 gcc 构建的代码。

是否有某种方法可以实现此目的(即能够执行 B::A::print())?

我目前使用的是 C++11,但如果有必要,可能会使用更新的版本。

最佳答案

只需使用typedef::A Ausing A =::A

https://godbolt.org/z/VVKk3V

关于c++ - 通过同一命名空间中的另一个类型访问类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59302905/

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