0
#ifndef MIGRATINGUSER_H
#define MIGRATINGUSER_H
#include <iostream>
using namespace std;

class MigratingUser
{
        public:
        void populateUidAndGuid(string line);
        private:
        string uid;
        string guid; 
};
#endif

そのヘッダー定義以下はcpp定義です。

#include "MigratingUser.h"
using namespace std;

void MigratingUser::populateUidAndGuid(string line)
{
  //get the uid and guid
}

これが私が得ているエラーです。どうすればこれを解決できますか?

undefined reference to MigratingUser::populateUidAndGuid(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'

完全を期すために、これは私がクラスを使用する方法です:

MigratingUser muser;

muser.populateUidAndGuid(temp);
4

1 に答える 1

1

まず、正しくフォーマットされていないため、これがエラーになるのではないかと思います。おそらくあなたは話題になっている何かを手に入れましたがstd::basic_string<char, std::char_traits<char>, std::allocator<char> >、あなたがいくつかの...興味深い...コードを持っていない限り、コンパイラがあなたが投稿したものを吐き出すことはありそうにありません。将来的には、専門家があなたが重要とは思わない詳細から驚くほど大量の情報を得ることができるので、正確にコピーして貼り付けてください。また、誤って編集すると、StackOverflowユーザーをひどく誤解させる可能性があり、ユーザーがあなたを助けるのがはるかに難しくなります。

さて、あなたの問題の最も可能性の高い原因は、コンパイルステップとリンクステップの違いに気付いていないことです。その「未定義の参照」エラーはリンカーエラーです。

これは、ヘッダーが正常であることを意味します-コードはコンパイルされますが、最後にすべてのオブジェクトファイルを正しくまとめていませんでした-したがって、の出力は(または「usage」と名付けたもの)g+ -c MigratingUser.cppの出力に含まれていませんでしたg++ -c main.cppコード)。

次のように、コンパイルとリンクを一度に実行できます(単純なプロジェクトの場合)。

g++ -o my_executable MigratingUser.cpp main.cpp

これにより、2つのファイルがコンパイルおよびリンクされます

于 2012-02-02T02:57:35.403 に答える