导致错误"non-class type"的类成员函数
class member function resulting in error "non-class type"
我想有一个简单的示例类(一个盒子),它有一个存储盒子尺寸的矢量数据成员。我试图对类进行编码,以便在实例化时将向量作为参数传递给它。该类有一个简单的成员函数,用于打印维向量。当我尝试编译时,我看到一个关于请求成员函数的错误,说该函数是"非类类型"。我应该如何处理这个错误?
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
class Box{
public:
Box(
std::vector<double> dimensions
);
void display_dimensions();
private:
std::vector<double> m_dimensions;
};
Box::Box(
std::vector<double> dimensions
):
m_dimensions(dimensions){
}
void Box::display_dimensions(){
for(unsigned int i = 0; i < m_dimensions.size(); i++){
std::cout
<< "element[" << i << "] = " << m_dimensions[i]
<< std::endl;
}
std::cout << std::endl;
}
int main(){
// Create an instance of a box and set its dimensions vector data member.
Box box_A(
std::vector<double> dimensions = {78.0, 24.0, 18.0} // dimensions
);
// Get the box instance to display its dimensions.
cout << "dimensions of box_A:" << endl;
box_A.display_dimensions()
}
不能这样调用带参数的构造函数:
Box box_A(
std::vector<double> dimensions = {78.0, 24.0, 18.0}
);
你不能用变量声明来调用构造函数(或任何函数),你必须在调用之前移动它并传递变量:
std::vector<double> dimensions = {78.0, 24.0, 18.0};
Box box_A(dimensions);
或者,您可以创建一个临时变量,使用列表初始化器让编译器推断类型:
Box box_A({78.0, 24.0, 18.0});
相关文章:
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 将公共但非静态的成员函数与ALGLIB集成
- 使用指向成员的指针将成员函数作为参数传递
- 将重载的成员函数传递给函数模板
- 我不小心调用了一个没有自己类对象的成员函数.但这是怎么回事呢
- 如何在C++中使用非静态成员函数作为回调函数
- C++错误C2600:无法定义编译器生成的特殊成员函数(必须首先在类中声明)
- 关联容器的下界复杂性:成员函数与非成员函数
- 在 C++ 中用派生类型重写成员函数
- 链表的泛型函数remove()与成员函数remove)
- 如何将lambda作为模板类的成员函数参数
- constexpr构造函数需要常量成员函数时出现问题
- 将自由函数绑定为类成员函数
- 区分非成员函数和头文件中的成员函数
- 如何从子成员函数修改父公共成员变量
- 保留对其他类的成员函数的引用
- 在运算符重载定义中使用成员函数(const错误)
- 内联如何影响模块接口中的成员函数
- 将成员函数指针作为参数传递给模板方法