gpt4 book ai didi

c++ - 在类外定义的类 typedef

转载 作者:行者123 更新时间:2023-11-30 03:20:37 29 4
gpt4 key购买 nike

我正在编写一个类 C,它有一个内部类 T,我希望将 T 的细节隐藏为一个内部类C 的实现。 C 中的方法都使用指向T 的指针。这当然是可能的:

// In header
class C {
public:
class T;
T* f();
void g(T*);
};

// In .cpp
class C::T { /* details here */ };

现在我的问题是,如何在 .cpp 文件中将 C::T 定义为另一个类型的别名。以下内容根本无法编译,但它说明了我想要做什么:

// Outside the class C
using C::T = std::string;

有没有解决这个问题的方法,同时保持目标,即隐藏 C::T 的细节?

最佳答案

正如其他人所指出的,这是不可能的。这是我的建议:

// .h
class C {
public:
struct T;
T* f();
void g(T*);
};

// .cpp
struct C::T
{
IMPL_TYPE data;
//If one is carefull with lifetimes this can almost in any context act as IMPL_TYPE.
//And if necessary, the data member can be accessed.
operator IMPL_TYPE&(){return data};
}

关于c++ - 在类外定义的类 typedef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52768154/

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