Typedef 不是命名空间的成员
Typedef not a member of namespace
所以,我正在尝试分叉一些开源代码,在编译时我遇到了这些错误:
C2039 "TransactionId":不是 'CryptoNote' 的成员
C2061 语法错误:标识符"事务 ID">
我对通常将自己限制在C#
领域C++
相对缺乏经验,但是,我可以清楚地看到TransactionId
是在不同的文件中声明的typedef
,如下所示:
namespace CryptoNote {
typedef size_t TransactionId;
typedef size_t TransferId;
//more code
抛出错误的行是:
void sendTransactionCompleted(CryptoNote::TransactionId _id, bool _error, const QString& _error_text);
在我没有经验的眼中,看起来TransactionID
肯定是Cryptonote
的一员,不是吗?
知道发生了什么吗?
回购在这里:https://github.com/hughesjs/Incendium_GUI
必要的子模块在这里:https://github.com/hughesjs/Incendium_Crypt
这些typedefs在Incendium_Crypt/include/IWalletLegacy.h
中定义。
void sendTransactionCompleted(CryptoNote::TransactionId _id, bool _error, const QString& _error_text);`
在Incendium_GUI/src/gui/SendFrame.h
中定义,其中包括IWallet.h
。但是,IWallet.h
反过来不包括IWalletLegacy.h
。因此,这些类型定义对SendFrame.h
来说是未知的。
如果不看到所有代码,很难说,但我想到了几件事:
-
首先,这是您遇到的第一个错误。 C++的编译错误往往会导致一堆次要错误。 例如,以下会导致与您看到的错误类似的错误,但由于尚未定义
size_t
而无法编译:命名空间 CryptoNote {
typedef size_t TransactionId; typedef size_t TransferId;
}
int main(void) { 加密注::交易ID ID; 返回 0; }
$ g++ -std=c++11 namespace.cxx -o namespace 命名空间.cxx:4:9:错误:"size_t"未命名类型 typedef size_t TransactionId; ^~~~~~ 命名空间.cxx:5:9:错误:"size_t"未命名类型 typedef size_t TransferId; ^~~~~~ namespace.cxx: 在函数 'int main()' 中: namespace.cxx:11:17:错误:"TransactionId"不是"CryptoNote"的成员 加密注::交易ID ID; ^~~~~~~~~~~~~
有关定义size_t
的标头列表,请参阅 http://www.cplusplus.com/reference/cstring/size_t/。
CryptoNote
是否嵌套在另一个命名空间中?- 在声明函数的命名空间中是否定义了其他
CryptoNote
? - 这些是否在同一个头文件中? 如果不是,定义命名空间的头文件是否包含在包含函数声明的头文件中?
- 命名空间 std 没有成员any_of
- 为什么 Clang 在命名空间'std'中没有名为 'copy' 的成员给出错误
- 初始化命名空间中的变量是否类似于将它们初始化为类成员?
- 在 c++ 中使用类的命名空间定义类的成员
- Catalina C++:使用<cmath>标头产生错误:全局命名空间中没有名为 'signbit' 的成员
- 命名空间 Win 没有成员"simpleControl"是什么意思
- Visual Studio 2017:命名空间"System"没有成员"Windows"
- 如何从嵌套在命名空间中的类调用成员函数?
- 成员的结构与命名空间的潜在范围
- 类成员函数在其命名空间之外定义
- Typedef 不是命名空间的成员
- 命名空间 pcl 在点云库中没有名为 PointCloud 的成员
- 将typeID转换为静态成员访问(C )的命名空间
- 无法解析命名空间成员"线程"
- 命名空间:不能在没有对象的情况下调用成员函数
- "uintmax_t":不是"全局命名空间"的成员
- OpenCV CUDA 函数缺失 - 命名空间"cv:cuda"没有成员"resize"
- 错误:"成员"在此上下文中是私有的 - 命名空间
- 从另一个命名空间访问标准命名空间数据成员
- 使用命名空间进行函数成员定义