-1

私のコードは以下のコードのようになります:

class DMLGroup
{
 public:
  DMLGroup();
 ~DMLGroup();
  void    SetName(string name);
 private:
 string mName; 
 };
void DMLGroup::SetName(string nm){
   mName.assign( nm );
}

int main()
{        
   string api="API_DML"; 
    DMLGroup * dmlGr = new DMLGroup();
    dmlGr->SetName(api.c_str()); //Getting link error with this statement
}

上記のコードをコンパイルできましたが、Windows 7 32 ビット OS で MS Visual Studio 9 を使用してリンクできませんでした。

注: suselinux-x8664 プラットフォームで正常にコンパイル、リンク、および実行できます。問題はウィンドウだけです

これを解決する方法を教えてください。

4

1 に答える 1

0

次のコードは正常にコンパイルおよびリンクされます。

#include "stdafx.h"
#include <string>

class DMLGroup
{
public:
    DMLGroup() {}
    ~DMLGroup(){}
    void    SetName(std::string name);
private:
    std::string mName; 
};
void DMLGroup::SetName(std::string nm){
    mName.assign( nm );
}

int main()
{        
    std::string api="API_DML"; 
    DMLGroup * dmlGr = new DMLGroup();
    dmlGr->SetName(api.c_str()); //Getting link error with this statement
}

私が変更したこと:

  • #include stdafx.h は VS 標準であるため - オフにすることができます
  • #欠落していたので含める
  • 文字列のすべての使用を std:: で装飾します - ほとんどの場合、ヘッダー ファイルでクラス定義を使用し、そこで「名前空間を使用する」を使用しないためです。
  • コンストラクタとデストラクタに提供されるデフォルトの実装

それで全部です。上記の部分に何が欠けているかを確認するか、問題を明らかにする例を提供して、リンカーのエラー メッセージを提供してください。

于 2013-07-03T08:17:42.537 に答える