main.cppの#included "theclassname.h"クラスにヘッダーファイルを作成しましたが、コンパイルしようとすると "ClassName :: TheConstructor(bool、int * 、std :: basic_string、std :: allocator>) ""メインC++でのクラスの問題
私はClassname.cppファイル内で "ClassName :: start"という名前のコンストラクタと関数をコーディングしましたが、何らかの理由でこの未定義参照の問題が発生していますこのスタート関数と私のcppファイルにもコード化されている私のデストラクタのために。ヘッダーファイル内でコード化された関数にメインで行うすべての呼び出しはこのエラーをトリガーしませんが、私の.cppファイルでコード化された関数へのすべての呼び出しでこれがトリガーされます。
私はこれについて多くの投稿を見ましたが、正しいパラメータと戻り値の型で適切にコード化し、関数名がヘッダーファイルで定義されているものと同じであることを確認しました。私が10回以上それをチェックしたので何かスペルミスの他にこれを引き起こしている可能性があります。
おかげ
#ifndef THECLASSNAME_H
#define THECLASSNAME_H
#include <iostream>
class TheClassName {
public:
TheClassName(bool theBool=true, int *theArray=0,
std::string message="-1");
~TheClassName();
void start();
void setBool(bool theBool) {aBool=theBool;}
bool getBool() {return aBool;}
void setMessage(std::string message) {mssg=message;}
std::string getMessage() {return mssg;}
std::string getHello() {return hello;}
private:
int *anArray;
bool aBool;
std::string mssg;
std::string hello;
void aFunction1(bool);
void aFunction2();
void aFunction3();
void aFunction4();
};
#endif
申し訳ありませんが、誰もそれを固定!私のメイクファイルでは、私は
exec1: main.o classname.o
g++ -o exec1 main.o
代わりの
exec1: main.o classname.o
g++ -o exec1 main.o classname.o
はそんなに皆さんありがとうございました!
コードを記述しようとするのではなく、コード(または少なくともコードの簡略化された代表バージョン)を投稿する必要があります。 –
.cppファイルはプロジェクトの一部ではないようです。プロジェクトに追加すると、コンパイラとリンカーは関数定義を見つけます。 – tmpearce
私は、あなたの前の質問(http://stackoverflow.com/questions/10386144/constructor-parameter-issue-c)を言い換えて/編集しておくべきだと思います。 –