C++没有合适的默认构造函数可用
问题描述:
我收到错误“A:没有适当的默认构造函数可用。”它指向我的行号是我初始化B类的行。C++没有合适的默认构造函数可用
我曾尝试做类似帖子中建议的初始化列表,但它没有解决错误。
该程序有很多其他功能,我为了可读性和简单性的目的而剪切出来,因为它们与错误无关。
我正在创建一个B对象,它在构造函数中创建两个A类对象,每个对象都接收一个指向单独函数的指针。
// Class A
template <typename T> class A
{
public:
// constructor
A(int c, bool(*Ptr)(T, T));
};
// Class B
template <typename T> class B
{
public:
//constructor
B(int c);
A <T> oneHolder; // Class A objects
A <T> twoHolder;
bool(*lowPtr)(T, T) = &lowerThan; // pointer to a function
bool(*highPtr)(T, T) = &higherThan; // pointer to a function
};
//Class A constructor
template <typename T>
A<T>::A(int c, bool(*fPtr)(T, T)) {
m_Size = c;
// set function pointer
func_ptr = fPtr;
}
//B Constructor
template <typename T>
B<T>::B(int c){ // Might need initialization list, error points here
m_Size = c;
// Create two A objects
A<T> one(c, lowPtr); // passing function pointer
A<T> two(c, highPtr);
lowHolder = one;
highHolder = two;
}
答
没有为'one'和'two'没有默认构造函数,所以你必须 –
初始化它们请发表MCVE,您的代码使用几个未声明的标识符(例如'lowerThan','lowHolder') –
ctor-initializer-list是解决这个问题的正确方法,当你尝试时出了什么问题? –