お世話になります。
現在、Visual Studio 2017にて、同じプロジェクト内で以下のような名前空間(lapace)を記述し、main関数でそれを使いたいのです。
しかし、宣言しても「名前は名前空間名である必要があります。」と表示され、
使いうことができません。そのようにすれば良いでしょうか?ご教授頂けると幸いです。
Visual
1 // laplace.cpp 2 3#include <iostream> 4#include <cmath> 5using namespace std; 6 7namespace laplace { 8 9 const int Nx = 40, Ny = 40; 10 const double eps = 1.0E-10; 11 12 class Laplace { 13 14 private: 15 double U[Nx][Ny]; 16 17 public: 18 19 Laplace();// Initialisation 20 void SetBoundary(double a, double b, double c, double d); 21 void GausSidel(double(&U)[Nx][Ny]); 22 23 }; 24 25 Laplace::Laplace() { 26 27 for (int i = 0; i < Nx; i++) { 28 for (int j = 0; j < Ny; j++) { 29 U[i][j] = 0.0; 30 } 31 } 32 } 33 34 void Laplace::SetBoundary(double a, double b, double c, double d) { 35 36 for (int i = 0; i < Nx; i++) { // Set boudary condition 37 U[i][0] = a, U[i][Ny - 1] = b; 38 } 39 for (int j = 0; j < Ny; j++) { 40 U[0][j] = c, U[Nx - 1][j] = d; 41 } 42 } 43 44 void Laplace::GausSidel(double(&U)[Nx][Ny]) { 45 46 double Unew = 0.0; //u(x,y) 47 double du; 48 double abse; 49 50 do { 51 abse = 0.0; 52 for (int i = 1; i < Nx - 1; i++) { 53 for (int j = 1; j < Ny - 1; j++) { 54 55 Unew = 0.25*(U[i - 1][j] + U[i + 1][j] + U[i][j - 1] + U[i][j + 1]); 56 du = Unew - U[i][j]; 57 abse += fabs(du); 58 U[i][j] = Unew; //upgrade uij 59 60 } 61 } 62 63 } while (abse >= eps); 64 } 65} 66//------------------end of laplace.cpp------------------------------ 67 68//main.cpp 69 70#include <iostream> 71#include <cmath> 72#include <fstream> 73#include <string> 74#include <sstream> 75 76using namespace std; 77using namespace laplace; //ここで「名前は名前空間である必要があります」と表示される。 78 79//以下略 80
回答2件
あなたの回答
tips
プレビュー