2012-02-07 25 views
0

これはサンプルコードです。私はVisual C++ 2010 Express Editionを使い始めました。このエラーは他の人たちと一緒になっていますが、これは私には大変なことです。C2146:構文:missing ')'識別子の前に

プログラム9.cpp(15):エラーC2146:構文エラー:見つからない ')' 識別子 'S' の前に

は、ここに私のコードです:

#include <iostream> 
#include <conio.h> 
#include <string> 
#include <string.h> 

using namespace std; 

class Salesman 
{ 
    char name[26]; 
    float total_sales; 
public: 
    Salesman (char *s, float f) 
    { 
     strcpy(name s); //Error occurs here. :(
     total_sales=f; 
    } 
    void prnobject (void) 
    { 
     cout<<this->name; 
     cout<<"\tHas invoked probject: \n"; 
    } 
}; 

void main() 
{ 
    clrscr(); 
    salesman Raman ("Raman", 21450), Sita ("Sita", 23190), Vedant ("Vedant", 19142); 
    Raman.prnobject(); 
    Sita.prnobject(); 
    Vedant.prnobject(); 
    getch(); 
} 
+5

'strcpy(name、s);' –

+0

入力文字列paramを変更する必要がないので、コンストラクタでも正確にSalesman(const char * s、float f)を使用する必要があります。 (名前は25文字+ナルターミネータに制限されています)、代わりにstd :: stringを使用してこれらのすべての頭痛を除去してください。 – David

+0

Ehm、@ BoltClock♦この質問を編集して、 "これはサンプルコードです。 –

答えて

7

あなたはカンマが必要:

strcpy(name, s); 

C++では、引数をカンマで区切る必要があります。名前をs引数を分けるペース。

3

変更strcpy(name s); //Error occurs here. :(

strcpy(name, s);

はありませんコメント

することをお勧めしますよう。

+8

あなたはコメントを修正するのを忘れました: '//ここにはエラーはありません:)'古いコメントは首に本当の痛みです。 – sbi

4
strcpy(name, s); 
      ^^^ 

コンマが見つかりませんでした。

2

コンパイラが不明瞭な句読点があると文句を言うときや、特定の場所に特定の文字を入れることを示唆するときは、という文法エラーがあります。あなたのコードに正確なエラーメッセージをフィットさせるためにあまりにも多くの努力を払わないでください。あなたはちょうどイライラして混乱します。その代わりに、コンパイラがより一般的なエラーメッセージを表示したというふうに、その行のどこかに文法エラーがあることを伝えるだけです。次に、C++の構文に関する知識を使用して、エラーを見つけて修正します。 (エラーは実際には前の行にある可能性があります;例えば、セミコロンまたは閉じ括弧を省略すると、コンパイラはファイルの後ろにある行をハイライト表示します)。

あなたは、括弧が欠けているはずです。その提案はあなたの心に植えられていなかった場合は、おそらくあなたは、実際には2つの関数の引数の間にコンマを欠落していたことを自分で考え出しただろう:

strcpy(name, s); 

コンパイラは閉じ括弧ので、括弧を示唆しますその点で構文的に有効なコードを作るために、が最もよく推測されるのはです。コンパイラは、まだ2つの引数を必要とする関数であると判断する意味解析を行っていないし、後でその行の後ろの閉じ括弧を認識するのに十分な読み方をしていないので、コンマがエラーを修正するためのよりよい提案です。コンパイラは、の最小値の変更が、最も基本的なの修正に必要な変更を示唆しています。

関連する問題