初始化 std::<list> 或 std::<vector 时出现问题>

Problem with initializing std::<list> or std::<vector>

提问人:pnwdino 提问时间:9/8/2023 最后编辑:pnwdino 更新时间:11/23/2023 访问量:168

问:

我编写了一个类,其中我使用 typedef 来定义一种新的列表,并在其中初始化/声明一个向量。列表和向量似乎都未启动,尽管每个向量都包含头文件。当我在代码的不同部分引用任何一个时,它会返回错误private:'myList' is not a member of 'myAttribute'

这是我目前拥有的代码:

在头文件“headerfile.h”中

namespace MyServiceNamespace
{
    struct {
        double j;
        int c;
    } aStruct;
    
    class ServicesAttributes
    {
     public:
        ServicesAttributes();
        virtual ~ServicesAttributes();
        
        int madeAdd(int a, int b) {return a + b; };
    private:
        int a, b;
    };
}

在 MyAttribute 文件(我遇到问题的那个)

#include <headerfile.h>
#include <list>
#include <vector>
namespace myAttribute {
    class myAttributeClass : public MyServiceNamespace::ServicesAttributes {
    public:
        typedef std::list<uint32_t> myList;

        myAttributeClass();
        virtual ~myAttributeClass();
        
        /* functions for the class*/

    private:
        myList theList;
        std::vector<MyServiceNamespace::aStruct> helperStructAttribute;
   }; // class myAttributeClass
} // namespace myAttribute

(更改了 var 名称,因为它们在源上下文中没有意义)

我一直不知所措,因为这似乎是一个简单的解决方法,但是,我已经做了一些研究,但还没有找到答案。我希望另一双眼睛能帮助我看到森林里的树木。

我尝试只使用数组,但它遇到了与列表和向量相同的问题。我也尝试将列表声明为 但仍然返回错误typedef std::list<uint32_7>(myList)'myList' is not a member of 'myAttribute'

当我将向量的类型更改为只是而不是在其他地方声明的结构时,向量工作正常。int

编辑我添加了更好的代码来支持这个问题(每个评论的人都是对的,我不够小心,没有添加足够的信息)。 但是:我解决了我遇到的问题。文件找不到 headerfile.h,因为包含路径有问题。虽然我很想知道这如何导致 std::list 不起作用,但我可能会将其关闭以供参考。感谢大家的快速回复和反馈。

C++ 标准

评论

0赞 463035818_is_not_an_ai 9/8/2023
请发布一个最小的可重现示例和完整的错误消息
5赞 463035818_is_not_an_ai 9/8/2023
“'myList' 不是'myAttribute'的成员”表明您在未向我们显示的代码中做错了什么。在您向我们展示的代码中,是该类的成员myListmyAttributeClass
3赞 user4581301 9/8/2023
关键在于如何定义。您创建了一个以匿名命名的变量,而不是以 .你想要而不是为了用作类型。或者你追求的是完全不同的东西,问题并不像我想象的那么清楚。但很可能 a 被删除了,定义的其余部分没有更新以匹配。aStructaStructstructstructastructstruct aStruct{...};struct {...} aStruct;astructtypedef
2赞 463035818_is_not_an_ai 9/8/2023
代码现在会触发编译器错误,但不会触发您询问的错误。此代码中的任何内容都不会使编译器抱怨“'myList'不是'myAttribute'的成员”。但是,如果您的代码存在该错误,则该错误应该很清楚。 不是 的成员,而是myListmyAttributemyAttributeClass
2赞 Peter - Reinstate Monica 9/9/2023
当您提出下一个问题时,请记住向我们提供帮助您的方法:(1)您期望什么(具体,最好是文字文本输出)。(2)你看到了什么?“不起作用”甚至“未启动”是不够的。它会编译吗?如果是,它有联系吗?如果是,它会运行吗?如果是,它的行为有什么问题?要具体。最好提供会议记录,文本形式,而不是屏幕截图。(3) 正如其他人所说:提供一个最小的例子,我们可以将其插入到我们最喜欢的构建系统中,编译并运行。

答: 暂无答案