class 成员函数导致错误 "non-class type"
class member function resulting in error "non-class type"
我想要一个简单的示例 class(一个盒子),它有一个存储盒子尺寸的向量数据成员。我试图对 class 进行编码,以便可以将向量作为实例化的参数传递给它。 class 有一个简单的成员函数,旨在提供维度向量的打印输出。当我尝试编译时,我收到有关请求成员函数的错误,指出该函数属于 "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});
我想要一个简单的示例 class(一个盒子),它有一个存储盒子尺寸的向量数据成员。我试图对 class 进行编码,以便可以将向量作为实例化的参数传递给它。 class 有一个简单的成员函数,旨在提供维度向量的打印输出。当我尝试编译时,我收到有关请求成员函数的错误,指出该函数属于 "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});