Я хочу иметь простой примерный класс (поле), в котором есть векторный элемент данных, который хранит размеры окна. Я попытался закодировать класс таким образом, что вектор может быть передан ему как аргумент при создании экземпляра. Существует простая функция-член класса, предназначенная для распечатки вектора размеров. Когда я пытаюсь скомпилировать, мне предоставляется ошибка в запросе функции-члена, говорящей, что функция имеет тип «неклассический тип». Как мне подойти к этой ошибке?Функция класса-члена, приводящая к ошибке «неклассовый тип»
#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_A', является объявлением функции, которая возвращает' Box', и принимает 'std :: vector' как аргумент, который имеет '{78.0, 24.0, 18.0} 'как значение по умолчанию. Итак - не экземпляр класса. Вы можете увидеть правильный способ экземпляра экземпляра класса в вашем примере: [здесь] (https://ideone.com/77CHTX). –