【问题标题】:Why does the compiler tell me vector<string> is not declared?为什么编译器告诉我 vector<string> 没有声明?
【发布时间】:2011-10-22 09:35:59
【问题描述】:

我这里有一些从文件中读取的代码,并将它们存储在向量中。

我希望将此向量传递给另一个类。但是,当我尝试这样做时,它给了我一个奇怪的错误,我不完全理解。好像是说vector没有声明。

这是一个很长的错误的前几行:

 g++ C_Main.cpp C_HomePage.cpp C_SelectionPage.cpp -o Project
     C_HomePage.cpp:286:40: error: no ‘std::vector<std::basic_string<char> > HomePage::getDutiesList()’ member function declared in class ‘HomePage’
    C_HomePage.cpp:290:26: error: ‘std::vector<std::basic_string<char> > HomePage::getResourcesList’ is not a static member of ‘class HomePage’
    C_HomePage.cpp:290:26: warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x
    C_HomePage.cpp:291:2: error: expected primary-expression before ‘return’
    C_HomePage.cpp:291:2: error: expected ‘}’ before ‘return’
    C_HomePage.cpp:291:2: error: in C++98 ‘HomePage::getResourcesList’ must be initialized by constructor, not by ‘{...}’
    C_HomePage.cpp:291:2: error: no matching function for call to ‘std::vector<std::basic_string<char> >::vector(<brace-enclosed initializer list>)’

这里是 C_HomePage.cpp 的第 282 - 292 行

int HomePage::getInitPoints(){ 
    return initPoints; 
}

vector<string> HomePage::getDutiesList(){
    return dutiesList;
}

vector<string> HomePage::getResourcesList{
    return resourcesList;
}

这里是 H_HomePage.h 中这些方法的相应声明

class HomePage {
        //These values will be the property of the flat
        //They are set before the login screen is displayed
        string manager;
        int initPoints;
        vector<string> dutiesList;
        vector<string> resourcesList;
        vector<FlatMember> flatMemberList;
        string loginName;


        public:

            HomePage(string);

            void login(string);
            string receivePassword();

            void importFlatMembers(string);
            void exportFlatMembers(string);         

            string getLoginName();
            string getManager();
            int getInitPoints();
            vector<string> getDutiesList;
            vector<string> getResourcesList;

};

老实说,我不知道出了什么问题,并且已经花了很多时间为此感到沮丧。有人可以帮忙吗?

【问题讨论】:

    标签: c++ string class vector declaration


    【解决方案1】:

    getDutiesListgetResourcesList 的声明中缺少括号:

    vector<string> getDutiesList();
    vector<string> getResourcesList();
    

    编辑:您的 .cpp 文件中也缺少括号:

    vector<string> HomePage::getResourcesList(){
        return resourcesList;
    }
    

    【讨论】:

    • 非常感谢!!!我不敢相信这浪费了我半天时间,但真的,谢谢!
    • 没问题!顺便说一句,在您发布的问题得到足够的答案后,通常会检查旁边的复选标记;这将问题标记为已回答,并给予回答者适当的功劳。 :) 谢谢!
    • 那么……像这样点击旁边的绿色勾号?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-07
    相关资源
    最近更新 更多