Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 错误:隐式声明的定义‘;constexpr DistanceTotale::DistanceTotale(const DistanceTotale&;)&x2019;_C++ - Fatal编程技术网

C++ 错误:隐式声明的定义‘;constexpr DistanceTotale::DistanceTotale(const DistanceTotale&;)&x2019;

C++ 错误:隐式声明的定义‘;constexpr DistanceTotale::DistanceTotale(const DistanceTotale&;)&x2019;,c++,C++,当我不使用标准C++11编译时,我有一个错误,我不知道为什么。这是我的.hpp: #include <vector> #ifndef VOYAGEUR_HPP #define VOYAGEUR_HPP class DistanceTotale { protected: int M; double * dist; public: DistanceTotale(int M0) : M(M0), dist(new doub

当我不使用标准C++11编译时,我有一个错误,我不知道为什么。这是我的.hpp:

#include <vector>

#ifndef VOYAGEUR_HPP
#define VOYAGEUR_HPP

class DistanceTotale {
    protected:
        int M;
        double * dist;
    public:
        DistanceTotale(int M0) : M(M0), dist(new double[M0*M0]) {}
        DistanceTotale(const DistanceTotale & D);
        double distance(int i, int j) const { return dist[i+M*j]; }
        double & distance(int i, int j) { return dist[i+M*j]; }
        double operator()(const std::vector<int> & x) const;

};



#endif

你的任务中缺少一个分号。它应该是
DistanceTotale(intm0):M(M0),dist(新的双精度[M0*M0]){。通过这个小的添加,它对我来说很好(初始化一个对象,然后使用copyctor创建另一个对象),编译器似乎不接受copyctor声明。你没有任何预处理器定义吗?我只能通过删除头文件中D的copyctor声明来重现错误。这是我能看到的唯一原因,或者你包含了错误的头文件。谢谢,是semcolon@Roim,所以在C++11之后,我们才不需要它。你的命令中缺少一个分号。它应该是
DistanceTotale(intm0):M(M0),dist(新的双精度[M0*M0]){。通过这个小的添加,它对我来说很好(初始化一个对象,然后使用copyctor创建另一个对象),编译器似乎不接受copyctor声明。你没有任何预处理器定义吗?我只能通过删除头文件中D的copyctor声明来重现错误。这是我能看到的唯一原因,或者你包含了错误的头文件。谢谢,是semcolon@Roim,所以在C++11之后我们才不需要它。
#include "voyageur.hpp"

DistanceTotale::DistanceTotale(const DistanceTotale & D) : M(D.M), dist(nullptr) {
    dist = new double[M*M];
    for(int i = 0; i<M*M; i++) {
        dist[i] = D.dist[i];
    }
}
 DistanceTotale::DistanceTotale(const DistanceTotale & D) : M(D.M), dist(nullptr) {