c++ - 对构造函数的未定义引用

  显示原文与译文双语对照的内容

我有一个简单的类我不能实例化,我不知道为什么。 请帮助我 !

-------Test.cpp--------


 #include<iostream>
 using namespace std;
 #include"meteo.h"
 int main()
 {
 Meteo meteo;
 }

-------meteo.h----------


#ifndef METEO_H
#define METEO_H

class Meteo
{
 public:
 Meteo();
 int Get(int i);
 private:
 char *list[];
};

#endif

-------meteo.cpp---------


#include"meteo.h"

Meteo::Meteo()
{
 list[]("Sec","Venteux","Humide");
}

int Meteo::Get(int i)
{
 return list[i];
}

我得到错误:"对`meteo的未定义引用:: meteo ( )""

时间:

似乎问题是编译器在编译构造函数时发出了一个错误


Meteo::Meteo()
{
 list[]("Sec","Venteux","Humide");
}

并没有生成对象模块。

这里记录


 list[]("Sec","Venteux","Humide");

无效。

尝试更改类定义,如


class Meteo
{
 public:
 Meteo();
 int Get(int i);
 private:
 const char *list[3];
};

并定义构造函数


Meteo::Meteo() : list {"Sec","Venteux","Humide" }
{
}

另一个原因可能是你在项目中没有包含对象模块 meteo 。

考虑到这个成员函数


int Meteo::Get(int i)
{
 return list[i];
}

同样错误 array的元素的类型是 const char * 而不是 int 。

...