提前为可能是一个糟糕的帖子道歉。我在stackoverflow上搜索了一些可以回答我问题的帖子,虽然这里的很多帖子都很相似,但似乎没有一个适合我的情况。我有一个struct Node,设计成一个容器。类字符,其中有字符的名称和权力。由于某些原因,如果没有默认的构造函数,代码会崩溃并出现错误:
#include <sstream>
#include <string>
#include <vector>
#include <iostream>
class Characters {
public:
int power;
std::string name;
Characters(int power, const std::string &name) : power(power), name(name) {}
// Characters() : power(0), name("") {}
//without above line, the code crashes with error: no matching function for call to 'Characters::Characters()' 39 | Node (const Node<T> &other) {
Characters(const Characters &other) {
power=other.power;
name = other.name;
}
};
template <typename T>
struct Node {
T val;
Node (const T &val) : val(val) {}
Node (const Node<T> &other) {
val= other.val;
}
};
int main() {
using namespace std;
Node<Characters> n1(Characters(4, "meh"));
Node<Characters> n2=n1;
return 0;
}
我不知道为什么在没有默认构造函数的情况下会发生这种情况。我可能只是不善于使用谷歌,但我搜索的东西似乎没有解决我的问题。
任何帮助将不胜感激。谢谢!
1条答案
按热度按时间k4emjkb11#
感谢463035818_is_not_a_number指出了这一点!
这下面:
应该用这个来代替。
我误解了成员初始化列表的用法和属性。