c++ - vector 的 undefined reference

标签 c++ vector static definition undefined-reference

我在使用 vector 时得到一个 undefined reference 。

这里是错误:

/tmp/ccYnTr05.o: In function `TourManager::addCity(City)':
tsp.cpp:(.text._ZN11TourManager7addCityE4City[TourManager::addCity(City)]+0x1c): undefined reference to `TourManager::destinationCities'
/tmp/ccYnTr05.o: In function `TourManager::getCity(int)':
tsp.cpp:(.text._ZN11TourManager7getCityEi[TourManager::getCity(int)]+0x14): undefined reference to `TourManager::destinationCities'
/tmp/ccYnTr05.o: In function `TourManager::numberOfCities()':
tsp.cpp:(.text._ZN11TourManager14numberOfCitiesEv[TourManager::numberOfCities()]+0x5): undefined reference to `TourManager::destinationCities'
collect2: ld returned 1 exit status

这是代码片段:

class TourManager
{
private:

    static vector<City> destinationCities;

public:

    static void addCity(City city)
    {
        destinationCities.push_back(city);
    }

    static City getCity(int index)
    {
        return (City)destinationCities.at(index);
    }

    static int numberOfCities()
    {
        return (int)destinationCities.size();
    }
};

我意识到vector还没有被初始化为一个值,但是vectors不是动态分配内存吗?我不确定如何解决这个未定义的引用问题?是 vector 问题还是其他问题?谢谢。

最佳答案

您只将 vector 声明为静态数据成员,但您还需要在类外定义它。例如

vector<City> TourManager::destinationCities;

关于c++ - vector 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20256335/

相关文章:

c++ - 在子类中实现继承类的方法(param=指向父的指针)(param=指向子的指针)

c++ - 如何在类模板的构造函数中初始化 vector 成员变量

java - JSP 中的表单 - 在每个帖子旁边添加日期

android - 静态广播不工作 ANDROID

c - 如何在多个模块中处理静态全局变量?

c++ - 如何上下转换C++智能指针

c++ - 如何在 Thrift 中使用 C++ 获取客户端 IP 地址

c++ - 找不到链接库的符号

c++ - 如何迭代 C++ 字符串 vector ?

c++ - 我可以从另一个函数中初始化静态成员吗​​?