質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

3655閲覧

コンストラクタからの他クラスの生成方法

alice-R

総合スコア18

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2016/11/04 12:58

編集2016/11/04 13:13

###前提・実現したいこと
ヘッダファイルに書いたTEST2クラスをTESTクラスのコンストラクタで、インスタンスの生成を行いたいと思っています。しかし、エラーが出てしまいます。エラーの理由をどなたか教えていただけないでしょうか。
どうぞ宜しくお願い致します。

###発生している問題・エラーメッセージ
Undefined symbols for architecture x86_64:
"TEST2::TEST2()", referenced from:
TEST::TEST() in abc-2ab15a.o
ld: symbol(s) not found for architecture x86_64

###該当のソースコード
c++

abc.hpp

class TEST2{
public:
TEST2();
};

abc.cpp

include "abc.hpp"

class TEST{
public:
TEST();
};

TEST::TEST(){
TEST2 test2;
}

int main(int argc, char *argv[])
{
TEST test;
return 0;
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちは。

単純にTEST2のコンストラクタの実体が未定義なのでリンカにて未定義エラーが出ています。
TEST2()の実体を定義すればよいです。

例えば下記のように。

C++

1class TEST2 2{ 3public: 4 TEST2() 5 { 6 } 7};

投稿2016/11/04 13:21

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

alice-R

2016/11/04 13:25

ありがとうございます。 大変参考になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問