[英]Not declared in scope C++ [Arrays]
我有一個快速的問題。 但是,嘗試創建一個打印出數組的方法,編譯器告訴我它沒有在范圍內聲明。
這是我的代碼:
int main() {
int theArray[10] = {41, 23, 43, 12, 43, 23, 12, 41, 29, 102};
printArray(theArray, 10);
}
這是我的printArray方法:
void printArray(int arr[], int size) {
int i;
for (i = 0; i < size; i ++) {
std::cout <<" "<< arr[i];
std::cout << std::endl;
}
}
我有什么問題嗎?
你的代碼非常好。 只要確保存在必要的includes
。 以及方法的順序:
#include <iostream>
#include <string>
void printArray(int arr[], int size) {
int i;
for (i = 0; i < size; i++) {
std::cout << " " << arr[i];
std::cout << std::endl;
}
}
int main() {
int theArray[10] = { 41, 23, 43, 12, 43, 23, 12, 41, 29, 102 };
printArray(theArray, 10);
return 0;
}
或使用forward declaration
:
#include <iostream>
#include <string>
void printArray(int arr[], int size);
int main() {
int theArray[10] = { 41, 23, 43, 12, 43, 23, 12, 41, 29, 102 };
printArray(theArray, 10);
return 0;
}
void printArray(int arr[], int size) {
int i;
for (i = 0; i < size; i++) {
std::cout << " " << arr[i];
std::cout << std::endl;
}
}
但是,您可以使用更多C ++現代風格編寫它:
1)使用模板化功能 :
#include <iostream>
#include <string>
#include <array>
template<std::size_t N> void printArray(std::array<int, N> x) {
for (auto const& item:x){
std::cout << " " << item << std::endl;
}
}
int main() {
std::array <int, 10> theArray{ { 41, 23, 43, 12, 43, 23, 12, 41, 29, 102 } };
printArray<10>(theArray);
return 0;
}
2)使用迭代器更好:
#include <iostream>
#include <string>
#include <array>
template<typename Iterator> void printArray(Iterator beg, Iterator end) {
for (auto it = beg; it != end; it = std::next(it)){
std::cout << " " << *it << std::endl;
}
}
int main() {
std::array <int, 10> theArray{ { 41, 23, 43, 12, 43, 23, 12, 41, 29, 102 } };
printArray(std::begin(theArray), std::end(theArray));
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.